iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
Live-music discovery through listening
Translation pending
MediaPython · TypeScriptGitHub @SebastienStDenisOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Live-music discovery through listening - Spotify playlists of artists coming to your city
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A website for live-music discovery that works through listening instead of listings. It connects to a user's listening history, finds artists they'd like with upcoming concerts in their city, and generates a playlist with a few top songs for each one. Users can hear who's coming to town and decide if they want to see the. The playlist stays fresh as new concerts get announced.Read the full README ↗A website for live-music discovery that works through listening instead of listings. It connects to a user's listening history, finds artists they'd like with upcoming concerts in their city, and generates a playlist with a few top songs for each one. Users can hear who's coming to town and decide if they want to see the. The playlist stays fresh as new concerts get announced.
Full-stack monorepo: FastAPI backend, Next.js frontend, Supabase for Postgres and auth, Docker Compose for the app services.
backend/)alembic init -t async migrations)frontend/)supabase start)supabase start # database, auth, Studio, Mailpit
docker compose up --build # API, web, sync worker
docker compose run --rm api uv run python -m cli.seed # first run only: seed the cities table
supabase start runs the data and auth layer (it must be up before docker compose up):
localhost:54322 (user/password postgres, database postgres)docker compose up runs the app services:
sync_runs queue; docker compose logs -f worker)Tear down with docker compose down and, when done, supabase stop.
On a fresh database, seed the cities table once (downloads the current GeoNames dumps):
docker compose run --rm api uv run python -m cli.seed
Re-run the same command any time to refresh the city data.
Host ports are configurable, so a second app stack (e.g. from a git worktree) can run alongside the main one under its own project name; both share the single Supabase stack:
API_PORT=8001 WEB_PORT=3001 docker compose -p my-branch up -d --build
docker compose -p my-branch down -v # tear it down
Or, run scripts/run-local.sh from a worktree to copy .env from main (if missing) and launch the stack using available ports.
All configuration lives in a single .env at the repo root (cp .env.example .env). Defaults cover everything except secrets. See .env.example for details.
cd backend
uv run ruff check . # lint (add --fix to auto-fix)
uv run ruff format . # format
uv run ty check # type check
uv run pytest # tests
cd backend
uv add <package> # add a runtime dependency
uv add --dev <package> # add a dev dependency
uv sync # sync the environment with the lockfile
uv lock --upgrade # upgrade all dependencies within constraints
cd frontend
npm install # install dependencies
npm run dev # dev server on http://localhost:3000
npm run lint # eslint
npm run build # production build
npm start # serve the production build
Autogenerate-driven Alembic workflow. Migrations are forward-only: fix mistakes with a new revision, do not rely on downgrades.
cd backend
uv run alembic revision --autogenerate -m "describe the change"
# review the file in migrations/versions/, then:
uv run alembic upgrade head