Trey t 9db1b41708 Fix seed SQL execution to handle multiple statements
PostgreSQL prepared statements don't support multiple commands.
Split SQL file into individual statements and execute each one,
handling string literals and comment-only blocks properly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 08:54:30 -06:00
2025-11-26 20:07:16 -06:00
2025-11-26 21:05:21 -06:00
2025-11-28 00:19:49 -06:00
2025-11-26 20:07:16 -06:00
2025-11-28 00:27:41 -06:00
2025-11-28 00:24:52 -06:00

MyCrib API (Go)

Go implementation of the MyCrib property management API, built with Gin, GORM, Gorush, and GoAdmin.

Tech Stack

Quick Start

Prerequisites

  • Go 1.21+
  • PostgreSQL 15+
  • Redis 7+

Development Setup

# Install dependencies
make deps

# Copy environment file
cp .env.example .env
# Edit .env with your configuration

# Run the API server
make run

Docker Setup

# Start all services
make docker-up

# View logs
make docker-logs

# Stop services
make docker-down

Project Structure

myCribAPI-go/
├── cmd/
│   ├── api/main.go          # API server entry point
│   ├── worker/main.go       # Background worker entry point
│   └── admin/main.go        # GoAdmin server entry point
├── internal/
│   ├── config/              # Configuration management
│   ├── models/              # GORM models
│   ├── database/            # Database connection
│   ├── repositories/        # Data access layer
│   ├── services/            # Business logic
│   ├── handlers/            # HTTP handlers
│   ├── middleware/          # Gin middleware
│   ├── dto/                 # Request/Response DTOs
│   ├── router/              # Route setup
│   ├── push/                # Gorush integration
│   ├── worker/              # Asynq jobs
│   └── admin/               # GoAdmin tables
├── pkg/
│   ├── utils/               # Utilities
│   └── errors/              # Error types
├── migrations/              # SQL migrations
├── templates/emails/        # Email templates
├── docker/                  # Docker files
├── go.mod
└── Makefile

API Endpoints

The API maintains 100% compatibility with the Django version.

Public Endpoints (No Auth)

  • GET /api/health/ - Health check
  • POST /api/auth/login/ - Login
  • POST /api/auth/register/ - Register
  • GET /api/static_data/ - Cached lookups

Protected Endpoints (Token Auth)

  • GET /api/residences/ - List residences
  • GET /api/tasks/ - List tasks
  • GET /api/tasks/by-residence/:id/ - Kanban board
  • See full API documentation in the Django project

Configuration

Environment variables (see .env.example):

Variable Description Default
PORT Server port 8000
DEBUG Debug mode false
SECRET_KEY JWT secret required
POSTGRES_* Database config -
REDIS_URL Redis URL redis://localhost:6379/0
APNS_* iOS push config -
FCM_SERVER_KEY Android push key -

Development

# Run tests
make test

# Run tests with coverage
make test-coverage

# Run linter
make lint

# Format code
make fmt

Database

This Go version uses the same PostgreSQL database as the Django version. GORM models are mapped to Django's table names:

  • auth_user - Django's User model
  • user_authtoken - Auth tokens
  • residence_residence - Residences
  • task_task - Tasks

Seeding Data

Seed files are located in seeds/:

  • 001_lookups.sql - Lookup tables (residence types, task categories, priorities, etc.)
  • 002_test_data.sql - Test users, residences, tasks, contractors, etc.

Local Development

# Seed lookup tables
./dev.sh seed

# Seed test data
./dev.sh seed-test

Production (Dokku)

# Seed lookup tables (required)
cat seeds/001_lookups.sql | dokku postgres:connect mycrib-db

# Seed test data
cat seeds/002_test_data.sql | dokku postgres:connect mycrib-db

Test Users

All test users have password: password123

Username Email Tier Notes
admin admin@example.com Pro Admin user
john john@example.com Pro Owns 2 residences
jane jane@example.com Free Owns 1 residence, shared access to residence 1
bob bob@example.com Free Owns 1 residence

Test Data Includes

  • 4 residences (house, beach house, apartment, condo)
  • 4 contractors with specialties
  • 10 tasks across residences
  • Documents/warranties
  • Notifications

Migration from Django

This is a full rewrite that maintains API compatibility. The mobile clients (KMM) work with both versions without changes.

License

Proprietary - MyCrib

Description
No description provided
Readme 3.4 MiB
Languages
Go 75.5%
TypeScript 20.3%
Shell 2.4%
HTML 0.7%
CSS 0.7%
Other 0.2%