Yet Another Learning Experience Made In Python.
A robust Social Media REST API built with FastAPI, SQLModel, and PostgreSQL. This project demonstrates a scalable backend architecture featuring user authentication, content management, and interaction systems.
graph TD
Client[Client Application] -->|HTTP / JSON| API[FastAPI Gateway]
subgraph "Application Layer"
API --> Auth[Auth Router]
API --> User[User Router]
API --> May["May (Post) Router"]
API --> Vote[Vote Router]
end
subgraph "Data Layer"
Auth --> ORM[SQLModel ORM]
User --> ORM
May --> ORM
Vote --> ORM
ORM --> DB[(PostgreSQL Database)]
end
- User Management: Registration, profile updates, and secure password handling.
- Authentication: JWT-based OAuth2 authentication flow.
- Content System: Create, read, and manage "Mays" (posts).
- Voting System: Upvote/downvote functionality with duplicate prevention.
- Documentation: Auto-generated Swagger UI and ReDoc.
-
Clone the repository
git clone https://github.com/adcondev/yalemi-api.git cd yalemi-api -
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Environment Configuration Copy
.env.exampleto.envand update the values:cp .env.example .env
Make sure you have a PostgreSQL instance running and accessible.
Start the development server:
uvicorn app.main:app --reloadThe API will be available at http://localhost:8000.
- Interactive Docs (Swagger UI):
http://localhost:8000/docs - Alternative Docs (ReDoc):
http://localhost:8000/redoc
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
This project is licensed under the MIT License - see the LICENSE file for details.