Git repo for the im (Inventor management) app that helps you organise your pantry inventory (and the world)
Go to file
Fre Timmerman cefe26a91a Merge pull request 'main' (#1) from jens/im:main into main
Reviewed-on: #1
2021-02-23 18:58:57 +00:00
.github/workflows Create ossar-analysis.yml 2020-09-09 00:32:19 +02:00
im enable template debugging 2020-11-08 15:45:34 +01:00
inventory remove fixed todo's 2020-11-08 17:11:40 +01:00
.drone.yml added tests 2020-11-08 15:20:52 +01:00
.gitignore fixed flake8 2020-11-08 15:31:33 +01:00
.pylintrc Update '.pylintrc' 2021-02-10 10:22:47 +00:00
LICENSE Initial commit 2018-09-16 12:17:52 +02:00 Added some things to publish this app 2018-09-20 23:00:24 +02:00 fix typos 2021-02-09 23:06:27 +01:00
initialdata.json add default categories and units 2020-11-08 18:00:53 +01:00 Update '' 2020-09-11 00:15:54 +00:00
requirements.txt Update 'requirements.txt' 2021-02-19 10:40:13 +00:00
setup.cfg added tests 2020-11-08 15:20:52 +01:00 Added some things to publish this app 2018-09-20 23:00:24 +02:00

Build Status


Pantry inventory management

Inventory management system written in django - python

The object of this django app is to keep track of which goods you own, when they will expire, when you should consume them and when you should buy more.


  • Enter items in your pantry (or other locations, with their location) with their expiry date

  • Items can have a minimum quantity you always want to keep in the pantry

  • a shopping list is automatically populated with items whose quantity is below this minimum quantity

  • you can add one-off items to this shopping list that are not tracked in the inventory.

  • You get an overview of items per expiry date so you know what to consume first (or throw away)

  • Extensive search and filtering and grouping on locations, categories, units, expiry date using the auto generated django admin interface

  • Locations are recursive so things can be in the kitchen pantry closet on the 3rd shelf on the right and still be in the kitchen

Getting started (development/testing)

dnf install -y python3-pip git
pip3 install django
git clone
cd im

python3 migrate
python3 createsuperuser 

add username and password for your admin login and start the development server

python3 runserver

Now you are running the development server, Visit to create a pantry inventory

  1. Visit to view your inventory website.


If you use ansible: see

dnf install python3-pip git
pip3 install django psycopg2 gunicorn
curl --output im-latest.tar.gz
tar -xvf im-latest.tar.gz
cd im
vim im/

change key,: ''.join(random.SystemRandom().choice(string.printable) for i in range(50)) set DEBUG=False set allowed_hosts to the hosts you want to allow (e.g. [localhost,,, im.yourdomain]

configure DATABASES to point to your database server

    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'inventorryapp',
        'USER': 'inventorryapp',
        'PASSWORD': '<password>',
        'HOST': '<db server ip',
        'PORT': '', 

clear migrations and start from empty db

python3 createsuperuser
python3 ./ collectstatic

add im user

useradd im

add systemd service file

vim /etc/systemd/system/gunicorn.service

Description=gunicorn daemon

ExecStart=/usr/local/bin/gunicorn --workers 1 --bind im.wsgi:application


systemctl enable gunicorn
systemctl start gunicorn

on your nginx server

useradd im

sudo usermod -a -G im nginx

chmod 710 /home/im

chcon -Rt httpd_sys_content_t /home/im/
rsync -rav /home/im/inventorryapp/static/  <app_server_ip>:/home/im/inventorryapp/static/

in /etc/nginx/nginx.conf DNS: to do manually set up a cname for im to point to yourdomain

    server {
       listen 80;
       server_name im.yourdomain ;
       location /static {
           root /home/im/inventorryapp/static ;
       location / {
          proxy_redirect off ;
          proxy_set_header Host $host ;
          proxy_set_header X-Real-IP $remote_addr ;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
          proxy_max_temp_file_size 0 ;
          client_max_body_size 10m ;
          client_body_buffer_size 128k ;
          proxy_connect_timeout 90 ;
          proxy_send_timeout 90 ;
          proxy_read_timeout 90 ;
          proxy_buffer_size 4k ;
          proxy_buffers 4 32k ;
          proxy_busy_buffers_size 64k ;
          proxy_temp_file_write_size 64k ;
pip3 install certbot-nginx
certbot -n --nginx -d im.yourodmain --hsts

browse to https://im.yourdomain

feature requests


  • Add items per location, click a location and then start adding items with the location list prepopulated
  • auto refresh dropdown boxes after items have been added in admin view, so page reload is not needed
  • auto parse dates in different date formats when given in a datefield. e.g. 20 12 2020 or 2020 12 20 to 2020-12-20
  • also make ipad show the numbered keyboard here
  • actually perhaps a date scroller is nicer here
  • units always minor case
  • make expirations a calendar view, generate ics file to import
  • public wishlist
  • easy clearing of shopping list
  • add easy consume view
  • save date consumed in history

medium high

  • mobile app
  • (requires rest api?)
  • garden something? layout
  • journal of things thrown away


  • make work offline
  • add items by scanning in a shopping list
  • add users
  • federated? use sqrl instead of passwords?

medium low

  • allow for lending stuff out

  • auto mailings when things should be returned?

  • double bookkeeping of where things are if both parties have this set up

  • ipfs (+ blockchain?)

  • will be done in a seperate app, oos for inventory

  • make it look something like this

  • figure out average usage of items over time and predict how much to buy in shopping list based on average expiry dates

  • figure out how long a certain item can last given current stock and average usage

  • easily deploy somewhere


  • add recipes
  • shopping list created based on recipe ingredients
  • auto proposal of recipe based on next expiry dates
  • offer to buy things that have been on shopping list for a while online (in bulk/aggregated)
  • 3d view of where things are in space
  • vr to help locate things