BookTracker is a full-stack web application for managing a personal book collection. It demonstrates end-to-end development, including backend API design, database integration, and frontend UI implementation.
- Backend: ASP.NET Core Web API, Entity Framework Core, SQLite
- Frontend: Vue 3, TypeScript, Tailwind CSS
- Testing: xUnit (backend unit tests)
- Tools: Git, GitHub, Visual Studio Code
- Full CRUD functionality: Add, view, edit, and delete books
- Persistent storage: Data stored in SQLite database via Entity Framework Core
- Responsive UI: Dynamic frontend built with Vue and Tailwind
- API integration: Frontend communicates with backend via RESTful endpoints
- Automated testing: Unit tests validate backend logic and data integrity
- Full-stack development and end-to-end application design
- Designing and implementing RESTful APIs
- Database modeling and querying with Entity Framework Core
- Frontend state management and dynamic rendering with Vue 3
- Writing maintainable, testable code using professional practices
Frontend
# Navigate to frontend folder
cd frontend
# Install dependencies
bun install
# Build
bun run buildBackend
# Navigate to backend folder
cd backend
# Restore .NET packages
dotnet restore
# Apply EF Core migrations
dotnet ef database update
# Run backend API
dotnet runDefault API URL: https://localhost:5001/api/books
Visit http://localhost:5173 (or your terminal output) to see the app.
The application exposes REST API endpoints:
The application exposes REST API endpoints:
GET /api/books- Get all book itemsGET /api/books/{id}- Get book item by IDPOST /api/books- Create new book itemPUT /api/books/{id}- Update book itemDELETE /api/books/{id}- Delete book item
- Structured development using Git branches and commits
- Documentation of setup, usage, and architecture
- Separation of frontend and backend concerns, reflecting real-world full-stack projects
- Implementation of automated unit tests for backend endpoints
- Commit EF Core migration scripts but do not commit the SQLite database file
- The database will be automatically created with seeded data on the first run