- 1. Introduction
- 2. Website Overview
- 3. Tests Coverage
- 4. Additional Developments
- 5. Deploying on Heroku
Website users have the opportunity to create their own accounts and publish their feedback. Each feedback can be liked by other users. Each user collects their own feedback and likes from other users.
Both registered and unregistered users have access to the website.
Unregistered users have the opportunity to view only the feedback of registered users, and they cannot like them.
Registered users have the opportunity to create their own profiles and leave feedback. They may not like the feedback they have.
In the following described in detail the functionality of the objects.
A Custom User Model has been implemented to create a user objects so that the email address can be used as the primary user ID instead of the authentication username.
The user objects have relational connections to all other objects in the project.
In terms of registration, users are:
- Anonymous User
- Registered users
- Administrative users
The accounts (profiles) objects have a relational connection "OnetoOne" with pre-created users.
The anonymous user has permission to view only all public post and their details. This user has restricted access to the navigation bar. He is able to register in the website with an email and password. The registration includes an email verification process. Once this user has registered and logged in to the website he has access to the rest of the functionality.
The registered user is already registered and can log in with an email and password. After his authentication, the user is able to navigate through the navigation bar. The registered user has his own profile with image, first name, last name, phone number, age. This user has all CRUD permissions to his own feedback. He can like all feedback in the system, except his own.
The administrative user gets enabled through the admin site by the superuser. His 'is_staff' field is set to True. This user has all CRUD permissions over other users and their posts in the database.
Every registered user has an account (profile). The profile allows the user to change his password, to update his own information and to delete his own account. The profile page shows the completion of the user's profile and his feedback. The profile can be completed up to 100% after all fields in the form are filled out. Each registered user can see other user profiles and their feedback.
The profile has the following fields:
- first name - CharField with max length 20 chars
- last name - CharField with max length 20 chars
- phone number - CharField max length 17 chars and validator for phone number
- age - IntegerField
- profile image - ImageField
The feedback could be either public or private. It can be viewed by all types of users but created, edited, and deleted only by its author. The author can't like his own feedback. Only the other users can like it.
The feedback has the following fields:
- type - CharField with max length 10 chars and choices options
- feedback - CharField with max length 10 chars and choices options
- description - CharField with max length 200 chars
- user - ForeignKey relation with nails user
The feedback likes are public. It can be viewed by all types of users. The author and anonymous users can't like the feedback. Only the other users can like it. Once the like object is created by a single user, can be deleted on clicked again.
The feedback likes has the following fields:
- feedback - ForeignKey relation with Feedback
- user - ForeignKey relation with nails user
The schedule could be either public or private. It can be viewed by all types of users but created, edited, and deleted only by superuser and staff user.
The schedule has the following fields:
- date - DateField
- start_time - TimeField
- end_time - TimeField
- available - BooleanField
- ✔️ Responsive web design
- ✔️ Class-based views
- ✔️ Extended Django user
- ❌ Documentation/ Swagger
- ✔️ Use a file storage cloud API e.g., Cloudinary, Dropbox, Google Drive or other for storing the files
- ❌ Implement Microservice architecture in your application.
- ✔️ Additional functionality, not explicitly described in this section, will be counted as a bonus if it has practical usage.
5. Deploying on Heroku - nails-project.herokuapp.com
- Using Git (Heroku Git, Heroku CLI)
- Using Github