onTrack was created to provide a way for developers to track issues for their projects.
The goals of onTrack are to:
- Provide a way for developers to track bugs/issues for their projects
- Monetize the platform by offering extra features to paying customers
The target audiences for this website are:
- Developers who want to manage their projects better
- To track issues/bugs in their project
- To stay on track with project goals
A developer using onTrack expects to:
- Be able to register, login, and logout
- Create, read, update or delete their user profile
- Create, read, update or delete an issue
- Easily and securely pay for the extra features
The following wireframes were designed with Balsamiq.
The User model for this project is the standard User model provided by Django.
Key | Validation | Field Type |
---|---|---|
user | User, on_delete=models.CASCADE | OneToOneField |
avatar | null=False | ImageField |
job_title | max_length=50, null=False | CharField |
github | max_length=50, null=False | CharField |
Key | Validation | Field Type |
---|---|---|
id | null=False, unique=True | PrimaryKey |
issue | null=False | TextField |
issue_type | max_length=50, choices=ISSUE_TYPE_CHOICES | CharField |
kanban_type | max_length=50, choices=KANBAN_TYPE_CHOICES | CharField |
project | max_length=50, null=False | ForeignKey |
user | max_length=50, null=False | ForeignKey |
created_date | auto_now_add=True | DateTimeField |
Key | Validation | Field Type |
---|---|---|
id | null=False, unique=True | PrimaryKey |
user | max_length=50, null=False | ForeignKey |
project_name | max_length=50, null=False | CharField |
created_date | auto_now_add=True | DateTimeField |
slug | null=False, unique=True | SlugField |
- Shows a registration form
- Has a link at the bottom that redirects to the sign in page if the user already has an account
- Shows a sign in form
- Has a link at the bottom to sign up if the user doesn't have an account
- Has a 'Forgot Password' option
- Displays a form with user profile details. The form is autopopulated from their account in the database
- The user has two options on the page, update their profile or delete their account
- Asks the user if they are sure they want to delete their profile
- Requires the user to confirm with their email and password
- Shows current issues
- Option to create, read, update, or delete an issue
- Two different views available, Kanban or Scrum
- A page to upgrade the user account for access to more features
- The checkout uses webhooks to confirm with Stripe API whether the payment is complete or not
- This project uses HTML, CSS, JavaScript and Python.
- Django as a python web application framework for faster development.
- Visual Studio Code as the Integrated Development Environment while developing this project.
- PIP to install the tools needed in this project.
- Git for version control during the development process.
- GitHub for a remote repository.
- CircleCI for Continuous Integration.
- Balsamiq to build wireframes in the planning stage of development.
- python-dotenv to make use of environment variables.
- Pylint-django for improving code analysis when analysing code using Django.
- Django Crispy Forms to style django forms on the backend.
- Heroku for hosting and deployment.
- Whitenoise to allow the web app to serve its own static files.
- Gunicorn a Python Web Server Gateway Interface HTTP server to aid in deployment of the Django project for heroku deployment.
- SQlite3 as the database for the development environment, provided by django.
- PostgreSQL as the database for the deployed site, hosted on Heroku.
- Psycopg2 as a DB API 2.0 compliant PostgreSQL driver for Python.
- Pillow adds image processing capabilities to Python.
- Bootstrap to develop responsive and mobile-first pages more easily.
CircleCI was used to test integration of the project. Pylint is run during these test to check for errors and enforces a coding standard in the Python language. All unit tests are run during the CircleCI build.
These tools were used to test the validity of the code for this project:
- Pylint-django and Microsofts Python Extension for VSCode was used to validate Python.
- The default user image is from flaticon