A app for requesting a new feature on a software.
The app is available here.
This app will be able to add features by clients. If a client sets a feature as priority 1, it will become the first priority in his/hers list. If another feature was set as priority 1 it will loose priority, and become the second. The second will become the third and so on.
- Python 3.7
- Pipenv version 2018.6.25
- Django 2.1 for main process
- Restless 2.1.1 for API definitions
- HTML + Bootstrap + Vue Js for frontend pages
- pytest + pytest-django + factories for tests
Decoupled frontend using Vue Js.
To run the app, you should you pipenv and you must have Python 3.7 installed. For detailed instructions on how to use pipenv check this.
To run the app locally, you must copy the env-template
file to a .env
file.
The default configuration is defined for using sqlite
. If you want to
use PostgreSQL, please provide the
database URL
in a variable called DATABASE_URL
inside the .env
file.
To run the Django app run:
$ pipenv run python papyrus/manage.py runserver
And the app will run on localhost:8000
.
To run the tests:
$ pipenv run pytest papyrus
The user can access 3 webpages:
/
: have the table with all features registred on the system ordered by target date/add/
: a page where the user can add a new feature/detail/<id>/
: a detailed view of the feature with the id
The API has a single endpoints:
- a GET on
/api/features/
will give you all available features registred - a GET on
/api/features/<id>/
will give a specific feature - a POST on
/api/features/
will create a new feature if all informations are given
The POST request must have the following inputs:
- Title - short description of the request
- Description - a detailed description of request
- Priority - an integer that defines the priority of the feature for that specific customer
- Target date - a date when the feature should be delivered (yyyy-mm-dd)
- Client - one of the clients registred (available: 'A' to 'D')
- Product area - which area of business the feature will be add (available: '1' to '4')
The inputs must be sent as a json file such as:
{
"client": "A",
"target-date": "2018-08-08",
"product_area": "1",
"title": "My Title",
"description": "My description",
"priority": "1"
}
- User authentication for creating a new feature
- Pagination for both the API and frontend