82 lines
2.5 KiB
Markdown
82 lines
2.5 KiB
Markdown
# Music Streaming API
|
|
|
|
A RESTful API for a music streaming service built with FastAPI and SQLite.
|
|
|
|
## Features
|
|
|
|
- User authentication (register, login, JWT tokens)
|
|
- Music management (songs, albums, artists)
|
|
- Playlist creation and management
|
|
- Music streaming
|
|
- Search functionality
|
|
- Basic recommendation system
|
|
|
|
## Tech Stack
|
|
|
|
- **FastAPI**: High-performance web framework for building APIs
|
|
- **SQLite**: Lightweight relational database
|
|
- **SQLAlchemy**: SQL toolkit and Object-Relational Mapper
|
|
- **Alembic**: Database migration tool
|
|
- **Pydantic**: Data validation and settings management
|
|
- **JWT**: JSON Web Tokens for authentication
|
|
- **Uvicorn**: ASGI server for hosting the application
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
/
|
|
├── alembic/ # Database migration scripts
|
|
├── app/ # Application source code
|
|
│ ├── api/ # API endpoints
|
|
│ │ └── v1/ # API version 1
|
|
│ ├── core/ # Core modules (config, security)
|
|
│ ├── db/ # Database session and utilities
|
|
│ ├── models/ # SQLAlchemy models
|
|
│ ├── schemas/ # Pydantic models/schemas
|
|
│ ├── services/ # Business logic services
|
|
│ └── utils/ # Utility functions
|
|
├── storage/ # Storage for files
|
|
│ ├── db/ # Database files
|
|
│ └── media/ # Media files (audio, images)
|
|
├── main.py # Application entry point
|
|
├── alembic.ini # Alembic configuration
|
|
└── requirements.txt # Python dependencies
|
|
```
|
|
|
|
## Setup and Installation
|
|
|
|
1. Clone the repository
|
|
2. Install dependencies:
|
|
```
|
|
pip install -r requirements.txt
|
|
```
|
|
3. Set up environment variables (create a `.env` file in the root directory):
|
|
```
|
|
SECRET_KEY=your-secret-key
|
|
```
|
|
4. Run database migrations:
|
|
```
|
|
alembic upgrade head
|
|
```
|
|
5. Start the server:
|
|
```
|
|
uvicorn main:app --reload
|
|
```
|
|
|
|
## API Documentation
|
|
|
|
Once the application is running, you can access the API documentation at:
|
|
|
|
- Swagger UI: http://localhost:8000/docs
|
|
- ReDoc: http://localhost:8000/redoc
|
|
|
|
## Environment Variables
|
|
|
|
| Variable | Description | Default |
|
|
|----------|-------------|---------|
|
|
| SECRET_KEY | Secret key for JWT tokens | Auto-generated |
|
|
| ACCESS_TOKEN_EXPIRE_MINUTES | Minutes before JWT token expires | 11520 (8 days) |
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License. |