- Python 53.9%
- HTML 42.5%
- CSS 3.5%
- JavaScript 0.1%
| beeja | ||
| home | ||
| shop | ||
| theme | ||
| .env.example | ||
| .gitignore | ||
| LICENSE.md | ||
| manage.py | ||
| Procfile.tailwind | ||
| README.md | ||
| requirements.txt | ||
This is the ecommerce website for Beeja Botanicals, although the plan is to eventually make reusable and customisable Django apps that can be used for other small ecommerce setups too.
Development quickstart
1. Set up a virtual environment:
The following commands create a new virtual environment
in the folder env and installs dependencies
python -m venv ./env
source ./env/bin/activate
python -m pip install -r ./requirements.txt
Once this is set up, remember to run the second command
(source ./env/bin/activate) every time you start a
new shell to work on the project again.
2. Set up environment variables
Environment variables are stored in .env (not to be
confused with the Python virtual environment from the
previous step). You can copy and customise the contents
of .env.example. Crucially, remember to set a strong
SECRET_KEY if you are deploying to production!
3 Setup Tailwind
The following commands install NodeJS dependencies for TailwindCSS
./manage.py tailwind install
4. Run all the pending migrations
This will create the relevant tables in the database
./manage.py migrate
5. Load initial data
The following command will load initial data into the database (currently the list of Indian states, for delivery).
./manage.py loaddata states
Note that this command will clear existing records from the database, so it should only be run once: right at the beginning
6. Run the development server
./manage.py tailwind dev
We use this command instead of ./manage.py runserver
because it also takes care of compiling tailwind
stylesheets (and even has auto-reload!).
Production slowend
0. Read the official Django deployment checklist
These are detailed instructions that you should be familiar with before you attempt to deploy anything in production! You can find the official documentation here.
This project makes it easier by using django-environ,
which means a lot of the things are already taken care
of by the .env file. Needless to say, this file should
be different in production than in the development
version.
1. Remove Beeja Botanicals related branding
The contents of theme/static/img are the property of Beeja Botanicals, LLP. Before you publish a website using this code, you should remove or replace those images.
In future, the codebase will be updated to use configurable generic branding and images so you won't have to repeat this step every time.
2. Redo the development setup
Follow steps 1 through 3 from the previous section. (You can skip step 4, since you don't want to run the development server.)
3. Build and collect static assets
The following command complies the final Tailwind stylesheet for serving
./manage.py tailwind build
After this, you should also the in-built Django command to collect other static files:
./manage.py collectstatic
4. Configure your webserver
You can a runner likegunicorn and configure your
web server to redirect requests to it.
Make sure you server serves the contents of /static/
and /media/ directly without passing them through
Django.
5. On every update
You might want to set up a git hook to run the following (from within the virtual environment of course):
./manage.py migrate
./manage.py tailwind build
./manage.py collectstatic
License
Copyright (C) 2025 Badri Sunderarajan
The program contained in this repository is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version, with the following exceptions:
- "Beeja Botanicals" and the Beeja Botanicals logos are registered trademarks of Beeja Botanicals, LLP. Usage of these trademarks without explicit written permission from the owner is prohibited.
- Beeja Botanicals, LLP reserves the right to images contained in the
theme/static/imgdirectory and its subdirectories. - The Montserrat font bundled in this repo is available under the SIL Open Font Licence.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License in the LICENSE.md file along with this program. If not, see http://www.gnu.org/licenses/.
In future, the codebase will be updated to use configurable generic branding and images.
Credits
This project makes use of the following Free Software projects:
- Django, the web framework for perfectionists with deadlines
- django-environ for easy loading of environment variables
- Feather, simply beautiful open source icons (with Django integration thanks to django-feather)
- Tailwind CSS, rapidly build modern websites without ever leaving your HTML (integrated with Django courtesy django-tailwind)
- daisyUI Tailwind CSS component library
- Python-Markdown, a Python implementation of John Gruber's Markdown specification
- Pillow, the friendly Python Imaging Library (PIL) fork
- Montserrat, a geometric sans-serif typeface desgined by Julieta Ulanovsky
