Discover, track, and share your anime journey with AniDev. Explore a vast library of anime titles, create personalized watchlists, and connect with fellow anime enthusiasts. Start your anime adventure
翻訳待ち
ソーシャルTypeScript · AstroGitHub @Sebas200702接続状況の再確認が必要です所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Astro SSR rewrite of AniDev — anime discovery platform rebuilt from scratch with Better Auth, Drizzle ORM, and Postgres for speed and scale.
翻訳待ち
Loading the full README.
Read the full README ↗AniDev is a modern anime streaming and exploration platform rebuilt from scratch as AniDev-v2. It is not just an API — it's the product: a full anime-discovery experience (search, collections, watch progress, schedules, profiles, optimized streaming) served by a fast edge backend.
Astro 6 (SSR) · Drizzle ORM · Better Auth · Tailwind v4 · Zod 4 · Biome · Vitest
Intro: AniDev v2 re-does the original AniDev from zero on a new stack (Astro SSR + Postgres + Dragonfly + Rustrak). The feature set below is the target — v2 ships it incrementally through OpenSpec-driven changes. See Current Status for what exists today.
astro:transitions.Today v2 ships the backend foundation + API + minimal shell; product features
arrive incrementally, each tracked as an OpenSpec change (openspec/changes/):
auth, anime, music, user, search-history (Zod-validated, enveloped responses, response-schema validation in the wrapper)media domain)season/score filters, whitelist sort, indexed free-text (pg_trgm), fail-closed parental floor, per-user search history/ (home), /anime/[id], /anime/[id]/[slug]@astrojs/vercel adapter (output: 'server')pg dialect)@tailwindcss/vite plugin)LOG_LEVEL)*.astro), Vitest (@vitest/coverage-v8)git clone https://github.com/Sebas200702/anidev-v2.git
bun install
cp .env.example .env # Windows: Copy-Item .env.example .env
bun run dev # http://127.0.0.1:4321
Env vars are validated eagerly at import (src/config/env.ts); a missing/invalid
required value fails fast.
| Variable | Req | Notes |
|---|---|---|
DATABASE_URL | yes | PostgreSQL connection URL (postgres:// / postgresql://) |
REDIS_URL | yes | Dragonfly/Redis connection URL (redis:// / rediss://) |
APP_BASE_URL | yes | Base URL (also Better Auth API_BASE) |
BETTER_AUTH_SECRET | yes | ≥ 32 chars |
SENTRY_DSN | no | Monitoring no-ops when absent |
PUBLIC_SENTRY_DSN | no | Client-exposed mirror of SENTRY_DSN for browser capture |
LOG_LEVEL | no | trace|debug|info|warn|error|fatal |
NODE_ENV | no | Defaults to development |
There is no BETTER_AUTH_URL — the base URL is APP_BASE_URL.
For local development against the full self-hosted stack (PostgreSQL +
Dragonfly + Rustrak) run docker compose up -d and copy .env.local.example
→ .env.local (local credentials, separate from production). Object storage
(MinIO, for profile avatar/banner uploads) is optional and lives behind the
storage profile: docker compose --profile storage up -d --build.
| Script | Purpose |
|---|---|
bun run dev | Astro dev server |
bun run build | Production build (Vercel output) |
bun run preview | Run the built output locally |
bun run format | Biome format (excludes .astro) |
bun run format:astro | Prettier on .astro |
bun run check | Biome lint + format check |
bun run check:write | Biome lint + safe fixes |
bun run check:types | Astro/TS typecheck (astro check) |
bun run astro sync | Regenerate .astro/types.d.ts |
bun run test / test:watch / test:coverage | Vitest |
bun run test:integration | Integration specs against a real Postgres (RUN_DB_TESTS=1; needs the docker stack + migrate + seed) |
bun run test:e2e / test:e2e:ui / test:e2e:install | Playwright E2E (API + browser) |
bun run db:seed:e2e | Seed the deterministic rows E2E asserts against |
bun run auth:generate / auth:migrate | Better Auth schema/migrations |
bun run db:generate / db:migrate | Drizzle migrations (PostgreSQL) |
bun run release:* | standard-version release — see Versioning |
Spec-Driven Development. Every feature passes SPECIFY → PLAN → TASKS → IMPLEMENT, managed via OpenSpec (openspec/); the source of truth is
openspec/specs/ and active work lives in openspec/changes/<change>/
(proposal.md, design.md, specs/delta, tasks.md). Completed changes are
archived to openspec/changes/archive/ with their deltas synced into
openspec/specs/.
This is the beginning of the README. Read the rest at the original. Read the full README ↗