ReadRover is a modern book management and reading tracking application. Keep track of your reading journey, organize your books into shelves, and manage your personal library with an intuitive web interface.
- User Authentication - Secure user registration and login system
- Book Management - Add, organize, and track your books
- Personal Shelves - Create custom collections and organize your library
- Reading Progress - Track your reading journey (coming soon)
- User Profiles - Personalized user experience
- Responsive Design - Works seamlessly on desktop and mobile devices
ReadRover is built as a modern full-stack application:
- Frontend: React 19 + TypeScript + Vite with Tailwind CSS and Radix UI components
- Backend: FastAPI with async support and SQLAlchemy ORM
- Database: PostgreSQL with Alembic migrations
- Authentication: JWT-based authentication with secure password hashing
- Development: Docker Compose for easy local development setup
- Docker and Docker Compose
- Git
-
Clone the repository
git clone https://github.com/domiebett/readrover-fullstack.git cd readrover-fullstack -
Configure environment
cp backend/.env.example backend/.env # Edit backend/.env and set your SECRET_KEY and other settings -
Start all services
docker compose up
-
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
readrover-fullstack/
├── backend/ # FastAPI backend application
│ ├── app/ # Application code
│ │ ├── api/ # API routes and endpoints
│ │ ├── core/ # Core functionality (database, config)
│ │ ├── models/ # Database models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utility functions
│ ├── alembic/ # Database migrations
│ ├── tests/ # Backend tests
│ └── requirements.txt # Python dependencies
├── frontend/ # React frontend application
│ ├── src/ # Source code
│ │ ├── app/ # App configuration and routing
│ │ ├── components/ # Reusable UI components
│ │ ├── features/ # Feature-specific code
│ │ ├── layouts/ # Layout components
│ │ ├── lib/ # Utility libraries
│ │ └── pages/ # Page components
│ └── package.json # Node.js dependencies
└── docker-compose.yml # Multi-service orchestration
See backend/README.md for detailed backend development instructions.
Quick commands:
# Start backend only
docker compose up backend -d
# Run tests
docker compose exec backend pytest
# Run linting
docker compose exec backend flake8
# Access backend container
docker compose exec backend bashSee frontend/README.md for detailed frontend development instructions.
Quick commands:
# Start frontend only
docker compose up frontend -d
# Run linting
docker compose exec frontend npm run lint
# Access frontend container
docker compose exec frontend sh- Automated Testing: Backend includes comprehensive unit and integration tests
- Frontend Testing: Comprehensive test suite with Vitest and React Testing Library
- Code Quality: Flake8 linting for Python code, ESLint for TypeScript/React
- CI/CD: GitHub Actions automatically run tests and linting on pull requests
- Pre-commit Hooks: Automatically run tests and linting before commits
# Run all backend tests and linting
cd backend && ./run-checks.sh
# Run frontend tests
cd frontend && npm run test
# Run frontend linting
cd frontend && npm run lintReadRover is designed to be deployment-ready with Docker:
- Production Environment Variables: Update
backend/.envwith production settings - Database: Use a managed PostgreSQL service for production
- Frontend Build: The frontend builds to static files that can be served by any web server
- Security: Ensure SECRET_KEY is properly set and CORS origins are configured
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
./backend/run-checks.shandnpm run lintin frontend) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
- 🐛 Bug Reports: Open an issue
- 💡 Feature Requests: Open an issue
- 📖 Documentation: Check the individual README files in
backend/andfrontend/directories