96 lines
2.3 KiB
Markdown
96 lines
2.3 KiB
Markdown
# 🏹 FletchIQ - Archery Scoring Application
|
|
|
|
A modern, secure, and extensible archery tournament scoring system built with React, TypeScript, Node.js, and PostgreSQL.
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
- Ubuntu/Linux
|
|
- Docker and Docker Compose
|
|
- Git
|
|
|
|
### Setup
|
|
|
|
1. **Navigate to project**
|
|
```bash
|
|
cd fletchiq
|
|
```
|
|
|
|
2. **Start all services**
|
|
```bash
|
|
docker-compose up
|
|
```
|
|
|
|
3. **Access the application**
|
|
- Frontend: http://localhost:3000
|
|
- Backend API: http://localhost:5000/api
|
|
- PostgreSQL: localhost:5432
|
|
- Redis: localhost:6379
|
|
|
|
### Development Commands
|
|
|
|
```bash
|
|
# View logs
|
|
docker-compose logs -f backend
|
|
docker-compose logs -f frontend
|
|
|
|
# Stop all services
|
|
docker-compose down
|
|
|
|
# Rebuild containers
|
|
docker-compose build --no-cache
|
|
|
|
# Reset database
|
|
docker-compose down -v
|
|
docker-compose up
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
fletchiq/
|
|
├── backend/ # Node.js/Express API
|
|
│ ├── src/
|
|
│ │ ├── routes/ # API endpoints
|
|
│ │ ├── controllers/ # Request handlers
|
|
│ │ ├── services/ # Business logic
|
|
│ │ ├── middleware/ # Express middleware
|
|
│ │ ├── models/ # TypeORM entities
|
|
│ │ └── utils/ # Helper functions
|
|
│ ├── database/ # SQL migrations
|
|
│ └── tests/ # Unit & integration tests
|
|
├── frontend/ # React application
|
|
│ ├── src/
|
|
│ │ ├── components/ # React components
|
|
│ │ ├── pages/ # Page components
|
|
│ │ ├── hooks/ # Custom React hooks
|
|
│ │ ├── services/ # API client
|
|
│ │ └── types/ # TypeScript types
|
|
│ └── public/ # Static assets
|
|
└── docker-compose.yml # Service orchestration
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
1. Implement authentication routes
|
|
2. Create tournament CRUD endpoints
|
|
3. Build scoring input UI
|
|
4. Add real-time leaderboard with WebSockets
|
|
5. Implement analytics dashboard
|
|
|
|
## Security
|
|
|
|
- JWT token-based authentication
|
|
- Bcrypt password hashing
|
|
- CORS and rate limiting
|
|
- Input validation with Zod
|
|
- Row-level security in database
|
|
|
|
## Contributing
|
|
|
|
Follow the architecture guide and ensure all code is:
|
|
- Type-safe (TypeScript)
|
|
- Well-tested
|
|
- Documented
|
|
- Following the existing patterns
|