A web application that integrates with AniList to create calendar events for your anime watching schedule.
- Node.js 18+
- Yarn (recommended) or npm
- Clone the repository:
git clone https://github.com/birdwell/AniListCal.git
cd AniListCal- Install dependencies:
yarn install- Configure environment variables:
cp .env.example .envEdit .env with your AniList OAuth credentials from https://anilist.co/settings/developer
Register this redirect URI for local dev:
http://localhost:5001/api/auth/callback
Required variables:
ANILIST_CLIENT_ID=your_anilist_client_id
ANILIST_CLIENT_SECRET=your_anilist_client_secret
SESSION_SECRET=any_long_random_string- Run the app:
yarn devOpen http://localhost:5001 in Chrome, Safari, or Firefox (OAuth redirects do not work in embedded IDE previews).
Login uses server-side OAuth with an HttpOnly session cookie. The browser never stores AniList or API tokens.
- Login:
GET /api/auth/login - Logout:
POST /api/auth/logout
See docs/adr/001-passport-session-auth.md for architecture details.
Set these on the app service:
NODE_ENV=production
ANILIST_CLIENT_ID=...
ANILIST_CLIENT_SECRET=...
SESSION_SECRET=...
REDIS_URL=redis://...
FRONTEND_URL=https://anilistcal.com
BACKEND_CALLBACK_URL=https://anilistcal.com/api/auth/callbackDo not set PORT on Railway — the platform injects it.
Build and start: yarn build · yarn start · Health check: GET /api/health
More detail: AGENTS.md
yarn test