A production-ready, full-stack template for building modern web applications. This monorepo combines the performance and safety of Rust with the flexibility of React and TypeScript, providing a solid foundation for scalable web applications.
RPRT/
βββ backend/ # Rust backend service
β βββ src/ # Source code
β βββ api/ # API routes and handlers
β βββ migrations/ # Database migrations
β βββ Dockerfile # Production Dockerfile
β βββ Dockerfile.dev # Development Dockerfile
β βββ Cargo.toml # Rust dependencies
β
βββ frontend/ # React frontend
β βββ src/ # Source code
β βββ public/ # Static assets
β βββ nginx.conf # Nginx configuration
β βββ Dockerfile # Production Dockerfile
β βββ Dockerfile.dev # Development Dockerfile
β βββ package.json # Node.js dependencies
β
βββ scripts/ # Development and deployment scripts
β βββ PRD.txt # Product Requirements Document
β
βββ tasks/ # Task management files
β βββ ...
β
βββ .dockerignore # Docker ignore rules
βββ .gitignore # Git ignore rules
βββ docker-compose.yml # Development Docker Compose
βββ docker-compose.prod.yml # Production Docker Compose
βββ Makefile # Common tasks automation
βββ DEVELOPMENT.md # Development setup and workflow
βββ DEPLOYMENT.md # Deployment instructions
βββ README.md # This file
- Backend: High-performance Rust server with Axum
- Frontend: Modern React with TypeScript and Vite
- Database: PostgreSQL with SQLx for type-safe queries
- Development: Pre-configured with essential tools and workflows
- Docker and Docker Compose (recommended)
- Rust (latest stable) - Only needed for local development without Docker
- Node.js (v20+) - Only needed for local frontend development
- PostgreSQL (v17+ recommended) - Only needed for local development without Docker
- Git
-
Clone the repository:
git clone https://github.com/SHA888/RPRT.git cd RPRT -
Start the development environment:
make dev-up
This will start:
- Backend API at http://localhost:3001
- Frontend at http://localhost:3000
- PostgreSQL database
- Redis for caching
- pgAdmin at http://localhost:5050 (default credentials: admin@example.com/admin)
-
Run database migrations:
make db-migrate
-
Set up the backend:
cd backend cp .env.example .env # Edit .env with your database credentials cargo build cargo run
-
Set up the frontend in a new terminal:
cd frontend cp .env.example .env npm install npm run dev
See DEPLOYMENT.md for detailed instructions on deploying to production.
- Development Guide - Setup and workflow
- Deployment Guide - Production deployment instructions
- Backend API Reference - API documentation
- Frontend Documentation - Frontend development guide
This project uses Task Master for task management. To get started:
-
View available tasks:
task-master list
-
Start working on a task:
task-master set-status --id=<task_id> --status=in-progress
-
Mark a task as complete:
task-master set-status --id=<task_id> --status=done
-
View the next task to work on:
task-master next
- Backend: Rust (Axum for REST APIs, SQLx for database access)
- Frontend: React with TypeScript (Vite for fast builds, Tailwind CSS for styling)
- Database: PostgreSQL with SQLx for type-safe queries
- Caching: Redis for session management and caching
- Containerization: Docker and Docker Compose for development and production
- CI/CD: GitHub Actions for automated testing and deployment
- Task Management: Task Master for project management
Contributions are welcome! Please read our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Backend: Rust (Axum for REST APIs, SQLx for database access)
- Database: PostgreSQL (relational database)
- Frontend: React with TypeScript (Vite for fast builds, Tailwind CSS for styling)
- Tools: GitHub Actions for CI/CD, optional Docker support
Before you begin, ensure you have the following installed:
- Rust: Stable version (install via rustup)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Node.js: v20 or higher (install via nvm or official installer)
- PostgreSQL: v17 recommended (install via package manager, e.g.,
brew install postgresqlon macOS) - Git: For version control
git clone https://github.com/SHA888/RPRT.git
cd RPRT# Navigate to backend directory
cd backend
# Copy environment file
cp .env.example .env
# Edit .env with your database credentials
# DATABASE_URL=postgres://user:password@localhost:5432/rprt_db
# Install SQLx CLI and run migrations
cargo install sqlx-cli
sqlx migrate run
# Start the backend
cargo runThe backend will be available at: http://localhost:3000
# Navigate to frontend directory
cd frontend
# Copy environment file
cp .env.example .env
# Edit .env with your API URL
# VITE_API_URL=http://localhost:3000
# Install dependencies
npm install
# Start the development server
npm run devThe frontend will be available at: http://localhost:5173
- Ensure PostgreSQL is running locally
- Create the database:
createdb rprt_db
- Migrations are applied automatically during backend setup
For containerized development:
- Ensure Docker and Docker Compose are installed
- Run the full stack:
docker-compose -f docker/docker-compose.yml up --build
Access the services:
- Backend: http://localhost:3000
- Frontend: http://localhost:5173
- PostgreSQL: localhost:5432
cd backend
cargo testcd frontend
npm test- Backend: Deploy to Fly.io, Render, or AWS ECS
- Frontend: Deploy to Vercel, Netlify, or Cloudflare Pages
- Database: Use managed PostgreSQL on Supabase, Neon, or AWS RDS
Don't forget to update environment variables in .env files for production URLs.
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Commit your changes:
git commit -m "Add feature" - Push to the branch:
git push origin feature-name - Open a pull request
Found a bug or have a suggestion? Please open an issue.
This project is licensed under the MIT License. See the LICENSE file for details.