An API designed to dynamically manage and display a portfolio of software projects.
This project is a RESTful API built with Django and Django REST Framework, providing endpoints to manage user profiles, projects, tags, and related functionalities.
To install the project, clone the repository and build the Docker containers. Use docker-compose up
to start the application.
After installation, the API documentation can be accessed at http://localhost:8000/api/docs
. Use endpoints to manage projects, tags, links, and user profiles.
- User profile management
- Project CRUD operations
- Tagging system
- Filtering and searching
To create a new user and authenticate with the API, follow these steps:
- Create a New User:
- Send a
POST
request to/api/user/create/
with the required user details. - Example payload:
{ "email": "[email protected]", "password": "password123" }
- Obtain an Authentication Token:
- Send a
POST
request to/api/user/token/
with the user's credentials. - The response will include a token:
{ "token": "your_generated_token" }
- Authorize Requests:
- Use the obtained token to authorize requests to the API.
- Include the token in the
Authorization
header of your requests:Authorization: Token your_generated_token
The project
item in the REST API includes URL mappings for project-related endpoints. These mappings make it easy to manage projects, tags, and links through the API.
The project uses PostgreSQL as its database. The Docker setup includes a service for PostgreSQL, which will be automatically set up when you run docker-compose up
.
For deployment, Docker and Docker Compose are used. The project includes configurations for building and deploying containers, ensuring the application runs smoothly in different environments.
Comprehensive tests are included to ensure the functionality and reliability of the API, along with linting to maintain code quality.
To run the tests and linting, use the following command:
docker-compose run --rm app sh -c "python manage.py test && flake8"
This command will execute the unit tests and perform linting with Flake8 inside the Docker container.
The project uses GitHub Actions for continuous integration. The workflow includes steps for testing, linting, and building Docker images.
Contributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.