A clean, simple book tracking API built with .NET 8 and Supabase
TaleTrail is a modern book tracking API that allows users to manage their reading lists, write reviews, create blog posts, and track their reading progress. Built with simplicity and beginner-friendliness in mind.
- π Authentication: Secure user registration and login with JWT
- π Book Management: Browse and search books with author and publisher information
- π Reading Lists: Track books with different statuses (ToRead, InProgress, Completed, Dropped)
- β Reviews: Write and manage book reviews with ratings
- π Blog Posts: Create and share blog posts about books
- π€ User Profiles: Manage user profiles and public pages
- π₯ Health Checks: Built-in health monitoring
- π Swagger Documentation: Interactive API documentation
- .NET 8 SDK
- Docker (optional)
- Supabase Account
-
Clone the repository
git clone https://github.com/yourusername/taletrail-api.git cd taletrail-api -
Set up environment variables
cp .env.example .env # Edit .env with your Supabase credentials -
Run the application
cd TaleTrail.API dotnet restore dotnet run -
Open your browser
- API: http://localhost:5198
- Swagger: http://localhost:5198
-
Using Docker Compose (Recommended)
docker-compose up -d
-
Using Docker directly
docker build -t taletrail-api -f TaleTrail.API/Dockerfile . docker run -p 8080:8080 taletrail-api
- Development:
http://localhost:5198 - Production:
https://your-render-app.onrender.com
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/signup |
Register new user |
| POST | /api/auth/login |
Login user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/book |
Get all books (with search) |
| GET | /api/book/{id} |
Get book by ID |
| GET | /api/book/by-author/{authorId} |
Get books by author |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/userbook/my-books |
Get user's books |
| POST | /api/userbook |
Add book to user's list |
| PUT | /api/userbook/{bookId} |
Update book status |
| DELETE | /api/userbook/{bookId} |
Remove book from list |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/review/book/{bookId} |
Get reviews for a book |
| POST | /api/review |
Create review π |
| PUT | /api/review/{id} |
Update review π |
| DELETE | /api/review/{id} |
Delete review π |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/blog |
Get all blogs |
| GET | /api/blog/{id} |
Get blog by ID |
| POST | /api/blog |
Create blog post π |
| PUT | /api/blog/{id} |
Update blog post π |
| DELETE | /api/blog/{id} |
Delete blog post π |
π = Requires authentication
For detailed API documentation, visit /swagger when the application is running.
TaleTrail.API/
βββ Controllers/ # API endpoints
βββ Services/ # Business logic
βββ DAO/ # Data access layer
βββ Model/ # Entity models and DTOs
βββ Middleware/ # Custom middleware
βββ Extensions/ # Extension methods
βββ Data/ # Database seeding
| Variable | Description | Required |
|---|---|---|
SUPABASE_URL |
Your Supabase project URL | β |
SUPABASE_KEY |
Your Supabase anon key | β |
SUPABASE_JWT_SECRET |
Your Supabase JWT secret | β |
ALLOWED_ORIGINS |
CORS allowed origins | β |
ASPNETCORE_ENVIRONMENT |
Environment (Development/Production) | β |
The application uses the following main entities:
- Users: User profiles and authentication
- Books: Book information with authors and publishers
- UserBooks: User's reading lists and progress
- Reviews: Book reviews and ratings
- Blogs: User blog posts
- Authors: Book authors
- Publishers: Book publishers
- Push to GitHub: Ensure your code is in a GitHub repository
- Connect to Render: Link your GitHub repo to Render
- Set Environment Variables: Configure your Supabase credentials in Render
- Deploy: Render will automatically build and deploy using Docker
The application is containerized and can be deployed to:
- Heroku: Using Docker
- Railway: Using Docker
- DigitalOcean App Platform: Using Docker
- AWS ECS/Fargate: Using Docker
- Google Cloud Run: Using Docker
# Run all tests
dotnet test
# Run with coverage
dotnet test --collect:"XPlat Code Coverage"- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation
- π Issues
- π¬ Discussions
- .NET Team for the amazing framework
- Supabase for the backend infrastructure
- Swagger for API documentation
- Community contributors and supporters
Made with β€οΈ for book lovers
# π TaleTrail APIA clean, simple book tracking API built with .NET 8 and Supabase
TaleTrail is a modern book tracking API that allows users to manage their reading lists, write reviews, create blog posts, and track their reading progress. Built with simplicity and beginner-friendliness in mind.
- π Authentication: Secure user registration and login with JWT
- π Book Management: Browse and search books with author and publisher information
- π Reading Lists: Track books with different statuses (ToRead, InProgress, Completed, Dropped)
- β Reviews: Write and manage book reviews with ratings
- π Blog Posts: Create and share blog posts about books
- π€ User Profiles: Manage user profiles and public pages
- π₯ Health Checks: Built-in health monitoring
- π Swagger Documentation: Interactive API documentation
- .NET 8 SDK
- Docker (optional)
- Supabase Account
-
Clone the repository
git clone https://github.com/yourusername/taletrail-api.git cd taletrail-api -
Set up environment variables
cp .env.example .env # Edit .env with your Supabase credentials -
Run the application
cd TaleTrail.API dotnet restore dotnet run -
Open your browser
- API: http://localhost:5198
- Swagger: http://localhost:5198
-
Using Docker Compose (Recommended)
docker-compose up -d
-
Using Docker directly
docker build -t taletrail-api -f TaleTrail.API/Dockerfile . docker run -p 8080:8080 taletrail-api
- Development:
http://localhost:5198 - Production:
https://your-render-app.onrender.com
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/signup |
Register new user |
| POST | /api/auth/login |
Login user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/book |
Get all books (with search) |
| GET | /api/book/{id} |
Get book by ID |
| GET | /api/book/by-author/{authorId} |
Get books by author |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/userbook/my-books |
Get user's books |
| POST | /api/userbook |
Add book to user's list |
| PUT | /api/userbook/{bookId} |
Update book status |
| DELETE | /api/userbook/{bookId} |
Remove book from list |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/review/book/{bookId} |
Get reviews for a book |
| POST | /api/review |
Create review π |
| PUT | /api/review/{id} |
Update review π |
| DELETE | /api/review/{id} |
Delete review π |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/blog |
Get all blogs |
| GET | /api/blog/{id} |
Get blog by ID |
| POST | /api/blog |
Create blog post π |
| PUT | /api/blog/{id} |
Update blog post π |
| DELETE | /api/blog/{id} |
Delete blog post π |
π = Requires authentication
For detailed API documentation, visit /swagger when the application is running.
TaleTrail.API/
βββ Controllers/ # API endpoints
βββ Services/ # Business logic
βββ DAO/ # Data access layer
βββ Model/ # Entity models and DTOs
βββ Middleware/ # Custom middleware
βββ Extensions/ # Extension methods
βββ Data/ # Database seeding
| Variable | Description | Required |
|---|---|---|
SUPABASE_URL |
Your Supabase project URL | β |
SUPABASE_KEY |
Your Supabase anon key | β |
SUPABASE_JWT_SECRET |
Your Supabase JWT secret | β |
ALLOWED_ORIGINS |
CORS allowed origins | β |
ASPNETCORE_ENVIRONMENT |
Environment (Development/Production) | β |
The application uses the following main entities:
- Users: User profiles and authentication
- Books: Book information with authors and publishers
- UserBooks: User's reading lists and progress
- Reviews: Book reviews and ratings
- Blogs: User blog posts
- Authors: Book authors
- Publishers: Book publishers
- Push to GitHub: Ensure your code is in a GitHub repository
- Connect to Render: Link your GitHub repo to Render
- Set Environment Variables: Configure your Supabase credentials in Render
- Deploy: Render will automatically build and deploy using Docker
The application is containerized and can be deployed to:
- Heroku: Using Docker
- Railway: Using Docker
- DigitalOcean App Platform: Using Docker
- AWS ECS/Fargate: Using Docker
- Google Cloud Run: Using Docker
# Run all tests
dotnet test
# Run with coverage
dotnet test --collect:"XPlat Code Coverage"- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation
- π Issues
- π¬ Discussions
- .NET Team for the amazing framework
- Supabase for the backend infrastructure
- Swagger for API documentation
- Community contributors and supporters
Made with β€οΈ for book lovers