PythonGram is a REST API application implemented using the FastAPI framework. It allows users to upload, manage, and share photos, as well as interact through comments and ratings.
Module | Description |
---|---|
FastAPI | Framework |
Pydantic | Validation library |
SQLAlchemy | ORM |
Alembic | Migration tool |
PostgreSQL | Database |
Cloudinary | Image hosting |
FastAPI-limiter | Rate limiting |
Passlib | Password hashing |
Qrcode | QR code generator |
Pillow | Image processing |
Endpoints:
POST /api/auth/signup
POST /api/auth/login
POST /api/auth/logout
POST /api/auth/refresh_token
The names speak for themselves
The application uses JWT tokens for authentication. Users have three roles: regular user, moderator, and administrator.
To implement different access levels (regular user, moderator, and administrator), FastAPI decorators are used to check the token and user role.
Users can perform various operations related to photos:
-
Upload photos with descriptions.
POST /api/images/upload_picture
-
Delete photos.
DELETE /api/images/{picture_id}
-
Edit photo descriptions.
PATCH /api/images/{picture_id}
-
Retrieve a photo by a unique link.
GET /api/images/{picture_id}
-
Add up to 5 tags per photo.
-
Apply basic photo transformations using Cloudinary services.
POST /api/transform/create_transform/{original_picture_id}
-
Generate links to transformed images for viewing as URL and QR-code. Links are stored on the server.
With the help of FastAPI decorators, described above, administrators can perform all CRUD operations with user photos.
Under each photo, there is a comment section. Users can:
- Add and read comments to each other's photos.
POST /api/comments/{picture_id}
GET /api/comments/all/{picture_id}
- Open and edit comment.
GET /api/comments/{comment_id}
PATCH /api/comments/{comment_id}
- Administrators and moderators if you have the role can delete comments.
DELETE /api/comments/{comment_id}
Endpoints for user profile:
-
See your profile.
GET /api/users/me
-
Edit your profile, or change your avatar.
PATCH /api/users/me
PATCH /api/users/avatar
-
See another user's profile.
GET /api/users/{username}
-
Ban users, if you have the administrator role.
PATCH /api/users/{username}
-
Create a route for a user profile based on their unique username. It returns all user information, including name, registration date, and the number of uploaded photos.
-
Users can edit their own information and view it.
-
Administrators can deactivate users (ban them). Inactive users cannot log in.
soon...
soon...
- Clone the repository.
git clone https://github.com/GodVov4/PythonGram.git
- Install dependencies.
pip install -r requirements.txt
or with poetry
poetry install
- Setup the ".env" file.
cp .env.example .env
and fill in the information you need
- Run the application.
uvicorn main:app --reload
- Enjoy!
This project is licensed under the MIT License.
Feel free to provide feedback, report issues, or contribute to the project!