This project is a Django REST Framework-based API for managing users and posts. It includes features such as user registration, user profile management, posting, commenting, liking posts, and user subscription.
User Management:
- Custom User model using email as the username.
- User registration, profile update, and password change.
- Follow and unfollow other users.
- View posts by users they follow.
- Custom image upload path for user photos.
Post Management:
- Create, update, and delete posts.
- Add comments to posts.
- Like and unlike posts.
- Filter posts by hashtags and author.
- Custom image upload path for posts images.
JSON Web Tokens: JSON Web Tokens are used to authenticate users.
Asynchronous Tasks with Celery and Flower: The API includes a feature to schedule posts using Celery.
- UserManager: Custom manager for the User model.
- User: Custom user model with fields such as
email,birth_date,photo,residence_place,followers, andmy_subscriptions. - ResidencePlace: Model to store the user's country of residence.
- Post: Model representing a post with fields such as
title,text,image,owner,hashtags,likes, andcomments. - Hashtag: Model representing hashtags used in posts.
- Comment: Model representing comments on posts.
-
Clone the repository:
git clone https://github.com/AlexGrytsai/SocialMediaAPI cd https://github.com/AlexGrytsai/SocialMediaAPI -
Environment Variables: Ensure you have a
.envfile in the root directory with the following variables:WEATHER_KEY=<WEATHERAPI_API_KEY> POSTGRES_PASSWORD=social POSTGRES_USER=social POSTGRES_DB=social POSTGRES_HOST=db POSTGRES_PORT=5432
-
Build and start the application using Docker:
docker-compose up
-
Loading data into a database (examples): Open a new terminal and enter the command:
docker exec -it social_media_api-app-1 /bin/sh python manage.py users_data_for_db.json python manage.py posts_data_for_db.json -
Create a superuser:
python manage.py createsuperuser
After created Super User, exit from container using the following command:
exit -
Access the application:
Open your web browser and navigate to http://localhost:8000 or http://127.0.0.1:8000. You need to get access token for use app - get token. For use an access token, you can use ModHeader - Modify HTTP headers for Chrome. After installing it, you need added Authorization with "Bearer <your_access_token>". Now, you can use all application's feathers. Use Flower to monitor the status of scheduled tasks and other Celery workers - http://localhost:5555.
-
Access the application's documentation:
You can familiarize yourself with all the documentation and methods of using the Airport API System by clicking on the link: swagger.