Welcome to the Diary API project! This project is built using ASP.NET Core and represents the backend and API for a diary application. The goal of this project is to provide a simple .NET-based daily planner API powered by the most popular and cutting-edge technologies.
- User Authentication: Secure JWT Token system.
- Diary Entry Management: Create, read, update, and delete reports, role and users.
- Data Persistence: Store data using Entity Framework Core.
- API Documentation: Swagger UI for API endpoint visualization and interaction.
- ASP.NET Core: For creating the web API.
- PostgreSQL: To strore data
- Entity Framework Core: For ORM and database interactions.
- Swagger: For API documentation and testing.
- RabbitMq: RabbitMq consumer and prudecer implemented.
- Redis: The requested reports are cached.
- Open Telemetry - All activity is tracked.
- Unit tests - To test new features.
- Serilog - Logs only necessary and saves logs in
.txt
files inJSON
format. - GraphQL - For flexible requests and subscriptions.
- JWT Tokens - To make secure requests.
To get started with this project, you'll need to have the following prerequisites installed:
- .NET Core SDK
- An IDE like Visual Studio or Rider
- A PostgreSQL Server instance for the database (or use PostgreSQL Server instance in
docker-compose.yml
- Docker
- Clone the repository to your local machine.
- Open the solution in your IDE.
- Restore the NuGet packages.
- Update the connection string in
secrets.json
ofDiary.Api
to point to your PostgreSQL Server instance. - Set up Redis(after installing execute
redis-server
) - Execute
docker-compose -p diary-auxiliary-services up -d
in project directory. - Start the application.
Once the application is running, you can interact with the API using tools like Postman or directly through the Swagger UI.
This project is still a work in progress, and contributions are welcome. If you'd like to contribute, please:
- Fork the repository.
- Create a new branch for your feature.
- Commit your changes.
- Push to your fork.
- Submit a pull request.
Do not contribute branches with -EXAMPLE
tag. They are for test purposes only.
Branchers with -NOT-COMPLETE
tag are not complete and are most likely not working.
This project is licensed under the MIT License - see the LICENSE.txt
file for details.
- Thanks to all the contributors who have helped with the development of this project.
For any queries or contributions, please open an issue in the repository.