A Django-powered API for handling shufflebox consumption client requests
- Django: The web framework for perfectionists with deadlines (Django builds better web apps with less code).
- Django Rest Framework: A powerful and flexible toolkit for building web APIs.
- Minor dependencies can be found in the requirements.txt file on the root folder.
-
If you wish to run your own build, first ensure you have python3 globally installed in your computer. If not, you can get python3 here.
-
After this, ensure you have installed virtualenv globally as well. If not, run this:
$ pip install virtualenv -
Git clone this repo to your PC
$ git clone git@github.com:AndelaOSP/shufflebox-backend.git -
-
Cd into your the cloned repo as such:
$ cd shufflebox-backend -
Create and fire up your virtual environment in python3:
$ virtualenv -p python3 env $ source env/bin/activate -
Install dependencies stored in the requirements text file:
$ pip install -r requirements.txt
-
-
Create a .env file and add the following:
SECRET_KEY=<Your-Secret-Key> DB_USER=<Your-username> DB_PASSWORD=<Your-password> JWT_TOKEN=<YOUR JWT TOKEN> DJANGO_SETTINGS_MODULE=<Path to settings file e.g core.settings.production> USER_API_TOKEN=<Bearer token> USER_SERVICE_URL=<url-for-andela-user-microservice> FILTER_PARAMS=<filter-to-query-users-from-microservice> DEFAULT_FROM_EMAIL=<DEFAULT FROM EMAIL ADDRESS> ADMIN_NAME=<Admin name> e.g shufflebox SLACK_TOKEN=<Your slack token allowing you access to slack api> PNC_EMAIL=<Email to send unpaired person in secret santa> END_OF_YEAR_PARTY_DATE=<Date for the end of the year> e.g Friday: 15th December, 2017 MAILGUN_API_KEY=<Api key for your mailgun domain> MAILGUN_SENDER_DOMAIN=<Mailgun domain>Save the file. You'll need it to keep sensitive info from the outside world, and make migrations work! 😄
-
On your psql console, create your database:
> CREATE DATABASE core;Then, make your Migrations
$ python3 manage.py makemigrationsMigrate your migrations to persist on the DB
$ python3 manage.py migrateFinally, add seed data to your newly created database
- Required: Admin user for shufflebox(P&C)
$ python3 manage.py loaddata admin.json- Optional: Initial data to populate your db
$ python3 manage.py loaddata initial_data.json -
On your terminal, run the server using this one simple command:
$ python3 manage.py runserverYou can now access the app on your local browser by using
http://localhost:8000/
| Endpoint | Description |
|---|---|
| POST /api/shuffle/ | Shuffle according to request. Request contains "type":("hangout" or "brownbag" or "secretsanta") and "limit": (Integer) in raw json format |
| GET /api/users/ | Get a list of users. |
| GET /api/users/:id | Get a single profile for a user using a user ID. |
| POST /api/brownbags/ | Create a single brownbag. Request should have date, status and user_id in form data |
| GET /api/brownbags/ | Get a list of all created brownbags, inclusive of the one next-in-line. |
| GET /api/brownbags/:id | Get a single brownbag. |
| PUT /api/brownbags/:id | Update a single brownbag. |
| DELETE /api/brownbags/:id | Delete a single brownbag. |
| GET /api/brownbags/next/ | Get the next brownbag presenter. |
| GET /api/brownbags/not_presented/ | Get all users who have not presented a brownbag. |
| POST /api/hangouts/ | Create a single hangout group. Request should have date and members in form or raw json data. |
| GET /api/hangouts/ | Get all created hangout groups. |
| GET /api/hangouts/:id | Get a single hangout group using its id. |
| PUT /api/hangouts/:id | Update a single hangout group. Request should have date and members in form or raw json data. |
| DELETE /api/hangouts/:id | Delete a single hangout group. |
| POST /api/santas/ | Create a single Secret Santa pair. |
| GET /api/santas/ | Get a list of all Secret Santa pairs. |
| GET /api/santa/:id | Get a single Secret Santa pair. |
| POST /api/mail/ | Send out shuffle box emails. Request contains "type":("hangout" or "brownbag" or "secretsanta") |
| GET /api/giftee/ | Get the giftee of the logged in user |
TBD