"Some books leave us free and some books make us free." โ Ralph Waldo Emerson
Join the Telegram contributors chat at https://t.me/joinchat/AfhaV0XSlMTeaWgWcqALcQ
Kamu is an application that focus on managing a physical library where you can add books, borrow and return them.
In the main page you can see the libraries shared between users. The libraries can be different unities, cities or name of friends that wants to share books. In the Screenshoot bellow, you can see an example of multiple libraries.
- Python 3.6+ for Django backend
- Node.js 8+ for frontend assets
Here is a quick step-by-step minimal setup, to get the app up and running in your local workstation:
To install Node.js and npm you can either download it from the node.js homepage or install it using homebrew:
brew install node
Create Python virtual enviroment:
python3 -m venv venv
Activate virtual enviroment (this command can change based on OS):
source venv/bin/activate
Install backend dependencies using pip:
pip install -r requirements.txt
Install frontend dependencies using npm:
npm install
Create database tables:
python manage.py migrate
Create a super user:
python manage.py createsuperuser
You will use this super user to login as administrator in your local Kamu application.
Seed the database with initial dump data:
python manage.py loaddata dump_data/*.json
Start your local server:
npm start
Now just go to http://localhost:8000 in your browser :)
For local setup with Okta authentication:
Use the OKTA_METADATA_URL
environment variable, concatenating it with the usual commands. Examples:
OKTA_METADATA_URL='url-of-okta-saml' npm start
OKTA_METADATA_URL='url-of-okta-saml' python manage.py migrate
Another way is to export the var and then execute the commands:
export OKTA_METADATA_URL='url-of-okta-saml'
npm start
python manage.py migrate
If you wish to disable Okta authentication again, execute:
unset OKTA_METADATA_URL
We support Docker =), just go to your favorite console and type:
docker-compose up
docker-compose ps #To check which port was assigned to the local container
Remember to create a .env
file with all the environment variables you need for spining up the environment.
We have out of the box support for Heroku ๐ and Dokku ๐ณ
For deployment, create a new Python app and set the remote origin from Dokku or Heroku, push it and enable the Postgres plugin.
The buildpacks should configure all the necessary libraries for you.
Now, we need the following environment variables before running Kamu for the first time:
SECRET_KEY="django-secret-key" # https://duckduckgo.com/?q=django+secret+key+generator
DEBUG="true" # Or false, depending if is a testing or production app
DJANGO_SETTINGS_MODULE="kamu.settings.prod" # If you plan to run a testing version with sqlite, this is not necessary
DATABASE_URL="" # This variable should be automatically configured by the postgres extension. See settings/prod.py for reference.
ALLOWED_HOSTS="kamu.example.com" # At this moment, only one domain is supported
OKTA_METADATA_URL="SECRET-OKTA-STUFF" # On the case of Okta Authentication support
ANALYTICS_ACCOUNT_ID="UA-123456789-1" # Only if you want to enable Google Analytics, otherwise don't set it
SENTRY_DSN="SECRET-SENTRY-DSN" # Only if you want to enable Sentry, otherwise don't set it
See Dokku environment variables or Heroku Config Vars for more details.
On non Okta based deployments, you should run either dokku run kamu /bin/bash
or heroku run /bin/bash -a kamu
(On this case, kamu is app name)
python manage.py createsuperuser
See #74