Work Group Messaging App

A real-time messaging application for work groups where team members can register with unique usernames and send messages to keep each other updated.

Features

  • User registration with unique usernames
  • Real-time messaging within work groups
  • Message history with timestamps
  • Username display alongside each message
  • Simple, clean interface

Project Structure

├── backend/
│   ├── database/
│   │   ├── blob-storage.ts    # Blob storage functions
│   │   ├── migrations.ts      # SQLite schema (backup)
│   │   └── queries.ts         # SQLite queries (backup)
│   ├── routes/
│   │   ├── auth.ts           # User registration/login
│   │   └── messages.ts       # Message CRUD operations
│   └── index.ts              # Main Hono server
├── frontend/
│   ├── components/
│   │   ├── App.tsx         # Main app component
│   │   ├── Login.tsx       # Login/registration form
│   │   ├── MessageList.tsx # Message display
│   │   └── MessageForm.tsx # Message input form
│   ├── index.html          # Main HTML template
│   └── index.tsx           # Frontend entry point
└── shared/
    └── types.ts            # Shared TypeScript types

API Endpoints

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login existing user
  • GET /api/messages - Get all messages
  • POST /api/messages - Send new message

Data Storage

The app uses Val Town's blob storage for persistence:

Users Storage

  • Key: workgroup_users
  • Structure: Array of User objects
  • Counter: workgroup_user_counter

Messages Storage

  • Key: workgroup_messages
  • Structure: Array of Message objects
  • Counter: workgroup_message_counter

Database Schema

User Object

{ id: number; username: string; created_at: string; }

Message Object

{ id: number; user_id: number; username: string; content: string; created_at: string; }

Usage

  1. Register with a unique username
  2. Start sending messages to your work group
  3. View real-time updates from other team members