arnapou / atcd
Project - ATCD Songs
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Forks: 0
Type:project
pkg:composer/arnapou/atcd
Requires
- php: ~8.4.0
- arnapou/dto: ^4.5
- arnapou/encoder: ^2.3
- arnapou/psr-cache: ^1.1
- arnapou/psr-container: ^1.1
- arnapou/psr-http: ^1.1
- arnapou/psr-log: ^1.1
- arnapou/zip: ^1.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.52
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^2.0
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/php-code-coverage: ^11.0
- phpunit/phpunit: ^11.0
README
Installation
composer create-project arnapou/atcd
packagist 👉️ arnapou/atcd
Project
Live running at 👉️ https://atcd.arnapou.net
ATCD stands for "Audio Trip Choreography Discord".
This repository is not affiliated with ATCD itself: this is a personal project.
Audio Trip is a VR (virtual reality) rhythm game which can help you to do some workout with fun, while "dancing".
Tech notes
- PHP backend, no framework, PSR respectful
- almost no JS, fast, simple, web basics
- Pico CSS fuchsia for the front design
- original atsandoggfiles are stored intopublic/files(cf.compose.override.dist.yaml)
- no database: all is indexed automatically into a file cache (only a few hundred of songs)
- zipfiles are served on-demand as a pure stream, small memory footprint, thanks to arnapou/zip lib
Endpoints
| URI | Description | filters (*) | 
|---|---|---|
| GET/ | home | |
| GET/songs | song list where you can filter and download songs | ✓ | 
| GET/songs.json | same as /songsbut as JSON | ✓ | 
| GET/analyze | basic text endpoint which can help fixing atsandoggfiles | |
| GET/download/{url-safe-base64}.zip | zipstream download of one song | |
| GET/download/all.zip | zipstream download of song list | ✓ | 
| GET/download/playlist.atl | atl(AT playlist) file of song list | ✓ | 
*() filters**: these are accepted parameters in the query string.
| Filter | Type | Description | Example | 
|---|---|---|---|
| q | string | Query on song (artist + title) | q=dragons | 
| p | string | Playlist name | p=My+Playlist | 
| t | string[] | List of Choreo types | t[]=Beginner | 
| c | string[] | List of Choreographers | c[]=OkDiSpLaY | 
| s | string[] | List of scenes | s[]=Anemone | 
| z | boolean | Whether to reset the scenes to "Universal" | z=0 | 
| f | string | The field to sort on, see the enum Sort | f=song1 | 
| d | YYYY-MM-DD | Recent song from {date} | d=2022-01-01 | 
Screenshot
Home

Song list

Php versions
| Date | Ref | 8.4 | 
|---|---|---|
| 10/01/2025 | 1.x, main | × |