A note-taking application built with FastAPI using PostgreSQL, Redis for caching, and a Telegram Bot using Aiogram for the user interface. This app allows users to easily create, edit, and delete notes through Telegram.
- Python 3.12+
- Docker
- Docker Compose
Backend:
- FastAPI
- PostgreSQL + SQLAlchemy
Bot:
- Aiogram + aiogram_dialog
- Fluentogram
- Redis
notions_app/ ├── bot/ # Code for Telegram Bot with Aiogram ├── api/ # Code for FastAPI backend ├── docker-compose.yml # Docker Compose configuration ├── requirements.txt # Python dependencies └── README.md # This file
- Clone the repository:
bash git clone <your_repository> cd notions_app
-
Ensure that Docker and Docker Compose are installed on your machine.
-
Configure environment variables if necessary in project initialization files.
To start the application, use the following command:
bash docker-compose up --build
This command will:
- Build the images for your backend and bot.
- Start the PostgreSQL, Redis services, and your application.
Once the build is complete, you can access FastAPI at:
You can also interact with your application using the Telegram Bot.
- Find your bot in Telegram (use @BotFather to create a new bot).
- Send commands to create, edit, and delete notes.
You can also interact with your API directly using tools like Postman or curl:
To stop all containers, you can use:
bash docker-compose down
If you'd like to contribute to the project, please create a pull request with a description of your changes.
- Title and Description: Starts with a brief overview of the project.
- Requirements: Lists the dependencies needed for the project.
- Project Structure: Shows how the code is organized.
- Installation and Running: Provides step-by-step instructions for setting up and running the application.
- Usage: Contains details on how to interact with the Telegram bot and provides examples of API requests.
- Stopping Services and License: Instructions on how to stop the services and information about the licensing of the project.
- Contribution: Invites others to contribute to the project.