Skip to content

omznc/reconned

Image

A monorepo application for managing airsoft events, clubs, and player profiles with view tracking capabilities.

Architecture

RECONNED is a monorepo built with Bun workspaces, consisting of:

  • Frontend (apps/web): Next.js 16+ application with App Router

    • Runs on port 3000 by default
    • Server-side rendering with React Server Components
  • Backend (apps/backend): Bun HTTP server

    • Runs on port 3002 by default
    • Uses Drizzle ORM for database access
    • Provides authentication endpoints via better-auth
    • OpenAPI documentation available at /api/docs
    • Uses a custom @reconned/router package

Tech Stack

Frontend

  • Framework: Next.js 16+ (App Router)
  • Styling: Tailwind CSS + shadcn/ui
  • Authentication: better-auth
  • Form Handling: react-hook-form + zod
  • State Management:
    • Server Actions with next-safe-action
    • Client state with React Query
    • URL State with nuqs
    • Feature flags with context providers
  • i18n: next-intl

Backend

  • Framework: Bun's built-in HTTP server with @reconned/router
  • Database: Drizzle ORM + PostgreSQL
  • Authentication: better-auth
  • API Docs: OpenAPI/Scalar

Shared

  • Package Manager: Bun
  • Language: TypeScript
  • Linting/Formatting: Biome

Getting Started

  1. Clone the repository

  2. Install dependencies

bun install
  1. Set the environment variables
cp .env.example .env
  1. Set up the database
cd apps/backend
bun run db:push
  1. Run the development servers
bun dev

This will start both:

  • Frontend at http://localhost:3000
  • Backend at http://localhost:3002

Features

  • User authentication with better-auth
  • Club management with admin controls
  • Event management and registration
  • Player profiles with gear tracking
  • View statistics and analytics
  • Feature flags for gradual rollouts
  • Admin dashboard with full CRUD operations
  • Responsive design with Tailwind CSS
  • Type-safe server actions
  • Internationalization (i18n) support
  • Real-time data with React Query

Feature Flags

RECONNED includes a comprehensive feature flag system for safe feature rollouts:

  • Admin Management: Full CRUD interface at /dashboard/admin/feature-flags
  • Caching: Redis-backed caching with database fallback
  • Type Safety: Compile-time validation with SCREAMING_SNAKE_CASE naming
  • SSR Support: Server-side rendering compatible
  • Real-time Updates: Automatic cache invalidation

Usage:

// Client components
const isEnabled = useFeatureFlag('MY_FEATURE_FLAG');

// Server components
const isEnabled = await getFeatureFlag('MY_FEATURE_FLAG');

Development Guidelines

Code Standards

  • Follow TypeScript best practices
  • Use React Server Components by default
  • Use client components only when necessary
  • Group related components in _components folders (see below)
  • Format code using Biome

Contributing

License

This software is available under two licenses:

  1. Non-Commercial/Non-Profit Use: MIT License
  2. Commercial Use: Please contact the author for commercial licensing options.

The full terms of each license can be found in the corresponding LICENSE files.

About

The airsoft site of the future.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages