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
960056cdf9
feat: add database and schema import scripts to arty.yml
...
Added three import scripts for sexy.pivoine.art database restoration:
1. sexy/db/import
- Imports PostgreSQL database from directus.sql
- Includes warning about destructive operation
- Restarts Directus API after import
2. sexy/schema/import
- Applies Directus schema snapshot from schema.yaml
- Uses 'directus schema apply --yes'
- Restarts Directus API after import
3. sexy/import/all
- Combined import with interactive confirmation
- Prompts user to type 'yes' to proceed
- Imports database then applies schema
- Complete restoration workflow
All scripts include comprehensive comments and safety warnings.
Complements existing export scripts (sexy/db/export, sexy/schema/export, sexy/export/all).
Usage:
pnpm arty sexy/db/import # Import database only
pnpm arty sexy/schema/import # Import schema only
pnpm arty sexy/import/all # Full import (with confirmation)
2025-10-28 22:12:25 +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
800c59ff94
feat: directus scheme
2025-10-28 21:24:34 +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
2a1ab80136
feat: artifact from github script
2025-10-26 21:20:57 +01:00
c481400873
feat: artifact from github script
2025-10-26 21:18:05 +01:00
c3e6327cb6
feat: artifact from github script
2025-10-26 21:08:56 +01:00
0ebc4d0e4e
feat: artifact from github script
2025-10-26 20:56:25 +01:00
0c45ab185f
feat: sdf
2025-10-26 20:32:16 +01:00
da29eaa80b
feat: sdf
2025-10-26 20:27:06 +01:00
8039cdbd8b
feat: sdf
2025-10-26 20:23:20 +01:00
8c37761ee9
feat: sdf
2025-10-26 20:18:47 +01:00
1d7dfa667d
feat: sdf
2025-10-26 20:07:08 +01:00
dd90fb2b78
feat: sdf
2025-10-26 20:04:56 +01:00
2704987916
feat: sdf
2025-10-26 19:59:11 +01:00
904491d983
feat: sdf
2025-10-26 19:43:34 +01:00
46b67d00c7
feat: sdf
2025-10-26 19:41:56 +01:00
47178fe3d6
feat: awsm db download
2025-10-26 18:57:20 +01:00
9e20002f18
feat: awsm db download
2025-10-26 18:48:45 +01:00
529e33fd1a
docs: readme
2025-10-26 18:40:00 +01:00
2aaeefb37f
fix: awsm labels
2025-10-26 18:22:11 +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
e2cc37c3c8
fix: awsm labels
2025-10-26 17:52:57 +01:00
7226417411
fix: awsm network name
2025-10-26 17:34:20 +01:00
e7977434d4
fix: awsm network name
2025-10-26 17:17:07 +01:00
2abc1b68ec
fix: awsm network name
2025-10-26 17:13:11 +01:00
b7e1312dc8
feat: awsm
2025-10-26 17:07:37 +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
434b974758
feat: extend arty for new arty
2025-10-26 12:07:06 +01:00
903e585659
fix: umami
2025-10-26 11:52:01 +01:00
142fd5442f
feat: uploads import/export
2025-10-26 11:40:07 +01:00
b4568e4756
feat: uploads import/export
2025-10-26 11:39:25 +01:00
dc74fdfa98
feat: uploads import/export
2025-10-26 11:38:32 +01:00
978107ba47
fix: arty cmds
2025-10-26 11:33:39 +01:00
8a59aa539a
fix: postgres options
2025-10-26 11:25:13 +01:00
0ce0eec479
fix: arty cmds
2025-10-26 11:20:49 +01:00
0af371ad22
fix: postgres ports
2025-10-26 11:13:35 +01:00
ecdb152a36
fix: db vars
2025-10-26 11:11:31 +01:00
b2b71c87c8
fix: network name
2025-10-26 11:05:19 +01:00