33804043c67fc38a3ac7409cbf9bcc71e12cd866
🏹 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
- Navigate to project
cd fletchiq
- Start all services
docker-compose up
- Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000/api
- PostgreSQL: localhost:5432
- Redis: localhost:6379
Development Commands
# 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
- Implement authentication routes
- Create tournament CRUD endpoints
- Build scoring input UI
- Add real-time leaderboard with WebSockets
- 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
Description
Languages
TypeScript
76.2%
CSS
9.5%
HTML
6.1%
JavaScript
5.3%
Dockerfile
2.9%