GuitarHub šŸŽø

A comprehensive platform for guitarists to find work opportunities and connect with fellow musicians through real-time chat.

Features

Job Board šŸ’¼

  • Post and browse guitar gigs, session work, band positions, and teaching opportunities
  • Filter jobs by type, status, and location
  • Apply to jobs directly through the platform
  • Job categories: Gigs, Session Work, Band Members, Teaching, and Other
  • Real-time job status updates (Open, Filled, Closed)

Chat Room šŸ’¬

  • Real-time messaging using Server-Sent Events
  • Guitar-themed interface with emoji reactions
  • User nicknames and timestamps
  • Message persistence with SQLite

User Experience

  • Responsive design with TailwindCSS
  • Tabbed interface for easy navigation between jobs and chat
  • Guitar-themed UI with musical emojis and styling

Project Structure

ā”œā”€ā”€ backend/
│   ā”œā”€ā”€ database/
│   │   ā”œā”€ā”€ migrations.ts    # Database schema for messages, jobs, and applications
│   │   └── queries.ts       # Database query functions
│   └── index.ts             # Main Hono server with job and chat APIs
ā”œā”€ā”€ frontend/
│   ā”œā”€ā”€ components/
│   │   ā”œā”€ā”€ App.tsx          # Main app with tabbed interface
│   │   ā”œā”€ā”€ ChatMessage.tsx  # Chat message component
│   │   ā”œā”€ā”€ MessageInput.tsx # Chat input component
│   │   ā”œā”€ā”€ JobBoard.tsx     # Job listings and management
│   │   ā”œā”€ā”€ JobPosting.tsx   # Individual job display and application
│   │   └── JobPostingForm.tsx # Job creation form
│   ā”œā”€ā”€ index.html           # Main HTML template
│   └── index.tsx            # React entry point
└── shared/
    └── types.ts             # Shared TypeScript types for chat and jobs

Tech Stack

  • Backend: Hono (TypeScript API framework)
  • Frontend: React 18.2.0 with TypeScript
  • Database: SQLite with three tables (messages, jobs, applications)
  • Styling: TailwindCSS
  • Real-time: Server-Sent Events (SSE) for chat

API Endpoints

Chat Endpoints

  • GET /api/messages - Get recent chat messages
  • POST /api/messages - Send a new chat message
  • GET /api/events - SSE endpoint for real-time chat updates

Job Endpoints

  • GET /api/jobs - Get job postings (with optional status filter)
  • GET /api/jobs/:id - Get specific job details
  • POST /api/jobs - Create a new job posting
  • PATCH /api/jobs/:id/status - Update job status
  • GET /api/jobs/:id/applications - Get applications for a job
  • POST /api/jobs/:id/apply - Apply to a specific job

Job Types

  • šŸŽ¤ Gig/Performance - Live performances, concerts, events
  • šŸŽ§ Session Work - Studio recording sessions
  • šŸŽø Band Member - Joining or forming bands
  • šŸ“š Teaching - Guitar lessons and instruction
  • šŸŽµ Other - Miscellaneous guitar-related work

Usage

  1. Getting Started: Enter your guitarist name to join the platform
  2. Browse Jobs: Use the Job Board tab to find work opportunities
  3. Post Jobs: Click "Post a Job" to create new opportunities
  4. Apply to Jobs: Submit applications directly through job postings
  5. Chat: Use the Chat Room tab to connect with other guitarists
  6. Filter & Search: Use filters to find specific types of work or locations

Database Schema

Messages Table

  • Chat messages with username, content, and timestamps

Jobs Table

  • Job postings with title, description, location, pay rate, type, contact info, and status

Applications Table

  • Job applications linking applicants to specific jobs with messages and contact details

The platform automatically handles job status management and provides a seamless experience for both job seekers and job posters in the guitar community.