Commit Graph

17 Commits

Author SHA1 Message Date
9c8be201ad refactor: standardize service naming and migrate track to umami
Service Naming Standardization:
- Renamed all compose service names to use consistent `{project}_app` pattern
- awsm: `awesome` → `awesome_app`
- gotify: `gotify` → `gotify_app` (also updated container_name)
- proxy: `traefik` → `traefik_app`
- vpn: `wg-easy` → `vpn_app`
- sexy: `directus` → `sexy_api`, `frontend` → `sexy_frontend`

Track to Umami Migration:
- Removed track/ directory (legacy naming)
- Created umami/ directory with updated compose.yaml
- Service now named `umami_app` following naming convention
- Configuration unchanged: PostgreSQL backend, Redis caching, Traefik routing
- Uses TRACK_* environment variables for compatibility with arty.yml

Benefits:
- Consistent naming makes service identification easier across projects
- Aligns with container_name conventions ({PROJECT}_app pattern)
- Improves docker ps readability and service management
- Umami directory name matches actual product name
2025-10-28 22:16:38 +01:00
36f48de7ad feat: update database and add Directus schema snapshot
Database Changes (directus.sql):
- Updated with complete gamification system (5 new tables)
- Added original_recording_id field to sexy_recordings for tracking duplicates
- Changed sexy_recordings.duration to NUMERIC(10,2) for decimal milliseconds
- Changed sexy_recordings.tags from text[] to json type
- All 17 achievements seeded (recordings, playback, social, special)
- Includes DROP IF EXISTS statements for safe re-imports
- Flags used: --clean --if-exists --no-owner --no-acl

New File - Directus Schema (schema.yaml):
- Complete Directus v11.12.0 schema snapshot
- All collections, fields, relations, and metadata
- Custom collections: sexy_recordings, sexy_videos, sexy_achievements, etc.
- Gamification tables: sexy_user_points, sexy_user_stats, sexy_user_achievements
- Can be applied with: npx directus schema apply schema.yaml

Export Command:
  docker exec sexy_postgres pg_dump -U sexy -d sexy \
    --no-owner --no-acl --clean --if-exists > directus.sql

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 21:51:14 +01:00
c682494289 fix: directus db revert 2025-10-28 21:35:41 +01:00
7949366477 feat: directus scheme 2025-10-28 21:10:26 +01:00
5c0b97e180 feat: update database dump with complete gamification system
- Added 5 new tables:
  - sexy_user_points: Point tracking history
  - sexy_achievements: Achievement definitions (17 seeded)
  - sexy_user_achievements: User achievement unlocks
  - sexy_user_stats: Aggregated user statistics and rankings
  - sexy_recording_plays: Playback tracking for gamification

- Updated sexy_recordings schema:
  - duration: INTEGER → NUMERIC(10,2) for decimal milliseconds
  - tags: text[] → json for consistent array handling

- Seeded 17 achievements across categories:
  - Recordings: First Recording, Recording Enthusiast, Prolific Creator, etc.
  - Playback: First Play, Active Player, Completionist
  - Social: First Comment, Conversationalist, Community Voice
  - Special: Early Adopter, Top 10 Rank, Balanced Creator

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 14:07:04 +01:00
b8467dda54 fix: change sexy_recordings duration to numeric type
Change duration column from integer to numeric(10,2) to support
decimal values in milliseconds. Fixes error when saving recordings
with fractional durations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 13:41:16 +01:00
3dcd76f35a feat: update database dump with gamification tables
Add gamification system tables to database dump:
- sexy_user_points: Point transaction log
- sexy_achievements: Achievement definitions (17 seeded)
- sexy_user_achievements: User achievement progress
- sexy_user_stats: Cached user statistics for leaderboard
- sexy_recording_plays: Recording playback tracking

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 13:37:23 +01:00
e845ad2625 feat: add sexy_recordings table to database schema
Added missing sexy_recordings table which stores hardware device session recordings. This table is required for the /me dashboard page to load properly.

Table structure:
- id, title, description, slug (unique)
- duration (integer), events (JSONB), device_info (JSONB)
- tags (text array), linked_video (foreign key to sexy_videos)
- status (draft/published/archived), public flag
- user_created/updated, date_created/updated
- Indexes on user_created, status, slug, linked_video, tags (GIN)

This fixes the 5-minute timeout issue on /me page where the recordings endpoint was trying to access a non-existent table.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 12:31:53 +01:00
c4a84ff0fb feat: add missing junction tables for models and videos
Added sexy_model_photos and sexy_videos_models junction tables to support
many-to-many relationships between models/files and videos/models.

This resolves 500 errors on homepage and endpoints that were querying
these missing tables.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 12:09:35 +01:00
12056fa657 feat: add video likes and plays tracking schema
Added missing database tables and columns for video engagement:
- sexy_video_likes: tracks user likes on videos
- sexy_video_plays: tracks video play analytics
- sexy_videos: added likes_count, plays_count, views_count columns

This enables the like/unlike feature and video analytics that were
already implemented in the frontend but missing the database schema.

Tables include proper indexes and foreign key constraints for performance.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 11:39:42 +01:00
c02ac86d31 fix: awsm labels 2025-10-26 18:09:22 +01:00
494eecf9ee fix: awsm labels 2025-10-26 18:03:13 +01:00
a1d3c33dca feat: awsm 2025-10-26 17:05:56 +01:00
d6b38fab8c fix: github workflow 2025-10-26 14:15:21 +01:00
db98d388a8 feat: arty cmd args passing 2025-10-26 12:33:05 +01:00
b2b71c87c8 fix: network name 2025-10-26 11:05:19 +01:00
d6943087f0 feat: sexy 2025-10-26 10:54:01 +01:00