untitled-4063models.ts1 match
1// Database models and data access layer for the GYM Management System
23import {
untitled-4063README.md7 matches
17- **Frontend**: React 18.2.0 with TypeScript
18- **Backend**: Hono.js API framework
19- **Database**: Firebase Firestore
20- **Authentication**: Firebase Auth
21- **Styling**: TailwindCSS
80```
81โโโ backend/
82โ โโโ database/
83โ โ โโโ firebase.ts # Firebase configuration
84โ โ โโโ models.ts # Data models and types
85โ โ โโโ queries.ts # Database query functions
86โ โโโ routes/
87โ โ โโโ admin.ts # Admin routes
1452. **Configure Firebase**:
146- Create a new Firebase project
147- Enable Firestore Database
148- Enable Authentication (Email/Password)
149- Add environment variables to Val Town
177#### Data Integrity Tests
178- โ Input validation
179- โ Database constraints
180- โ Error handling
181- โ Data backup and recovery
204- **Serverless**: Val Town's serverless architecture for auto-scaling
205- **CDN**: Static assets served via CDN
206- **Database Indexing**: Optimized Firestore queries
207- **Caching**: Client-side caching for frequently accessed data
208209### Database Optimizations
210- **Compound Queries**: Efficient Firestore query patterns
211- **Pagination**: Large datasets handled with pagination
23import { Hono } from "https://esm.sh/hono@3.11.7";
4import { runMigrations, seedDatabase } from "./database/migrations.ts";
5import auth from "./routes/auth.ts";
6import tasks from "./routes/tasks.ts";
16});
1718// Initialize database on startup
19let dbInitialized = false;
2021async function initializeDatabase() {
22if (!dbInitialized) {
23console.log('Initializing TaskSwap database...');
24await runMigrations();
25await seedDatabase();
26dbInitialized = true;
27console.log('Database initialization complete');
28}
29}
3031// Middleware to ensure database is initialized
32app.use('*', async (c, next) => {
33await initializeDatabase();
34await next();
35});
taskswapmessages.ts1 match
8getTaskMessages,
9getTaskById
10} from "../database/queries.ts";
1112const messages = new Hono();
4import type { ApiResponse } from "../../shared/types.ts";
5import { requireAuth } from "./auth.ts";
6import { getUserById, getTasks } from "../database/queries.ts";
78const users = new Hono();
11updateUserTokens,
12createExchange
13} from "../database/queries.ts";
1415const tasks = new Hono();
12getSessionUser,
13deleteSession
14} from "../database/queries.ts";
1516const auth = new Hono();
taskswapqueries.ts1 match
1// Database query functions for TaskSwap
23import { sqlite } from "https://esm.town/v/stevekrouse/sqlite";
taskswapmigrations.ts7 matches
1// Database migrations for TaskSwap
23import { sqlite } from "https://esm.town/v/stevekrouse/sqlite";
45export async function runMigrations() {
6console.log('Running database migrations...');
7
8// Users table
105await sqlite.execute(`CREATE INDEX IF NOT EXISTS idx_sessions_expires ON sessions(expires_at)`);
106107console.log('Database migrations completed successfully');
108}
109110// Seed data for development
111export async function seedDatabase() {
112console.log('Seeding database with sample data...');
113
114// Check if we already have users
115const existingUsers = await sqlite.execute('SELECT COUNT(*) as count FROM users');
116if (existingUsers[0].count > 0) {
117console.log('Database already seeded, skipping...');
118return;
119}
220}
221222console.log('Database seeded successfully');
223}
16```
17โโโ backend/
18โ โโโ database/
19โ โ โโโ migrations.ts # Database schema
20โ โ โโโ queries.ts # Database operations
21โ โโโ routes/
22โ โ โโโ auth.ts # Authentication endpoints
44- **Backend**: Hono (TypeScript API framework)
45- **Frontend**: React 18.2.0 with TypeScript
46- **Database**: SQLite with Val Town's sqlite service
47- **Styling**: TailwindCSS with custom design system
48- **Authentication**: Simple token-based auth
58591. The app runs on Val Town's platform
602. Database tables are auto-created on first run
613. Visit the app URL to start using TaskSwap
624. Create a profile and start posting or browsing tasks