Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Crossoufire/MyLists

Repository files navigation

MyLists

The all-in-one media tracking platform.

MyLists is a comprehensive, type-safe web-app designed to help you organize and track your movies, TV series, anime, manga, books, and video games in one unified interface.

Key Features

  • Multi-Media lists: Dedicated lists for Movies, Series, Anime, Manga, Books, and Games.
  • Upcoming Media: Get notified when new Media are released.
  • Advanced Analytics: Visualize your habits with detailed statistics, trends, and platform-wide insights.
  • Modern Full-Stack Architecture: Built with TanStack Start and end-to-end type-safety.
  • Daily Moviedle: A daily guessing game to test your movie knowledge.
  • Achievements System: Earn unique badges and track your progress as you consume more media.
  • Secure Authentication: Robust user management powered by Better-Auth.

Quick Start

Ensure you have Bun installed on your machine.

  1. Clone the repo

    git clone https://github.com/crossoufire/mylists.git
    cd mylists
  2. Install deps

    bun install
  3. Configure the env file

    Create a .env file in the root directory (you can copy from .env.example): Update it with your credentials and configuration values. See Environment Variables for more info.

    cp .env.example .env
  4. Initialize Database Initialize a new SQLite database in the instance directory.

    bun run new:db
  5. Run the Dev Server

    bun run dev

Environment Variables

Below is an explanation for each key found in .env.example:

Variable Description Required Example
Main Configuration
DATABASE_URL SQLite / PostgreSQL / other DB connection URL file:./instance/site.db
VITE_BASE_URL Base URL used by the frontend http://localhost:3000
File Management
UPLOADS_DIR_NAME Folder name where uploaded files are stored static
BASE_UPLOADS_LOCATION Path to the uploads directory (relative or absolute) ./public/static/
Admin Access
ADMIN_PASSWORD Admin dashboard password password
ADMIN_TOKEN_SECRET Secret key for admin access token signing
ADMIN_TTL_COOKIE_MIN Lifespan of the admin session cookie (in minutes) 10
Admin Mail Service
ADMIN_MAIL_USERNAME SMTP username/email used to send verification emails
ADMIN_MAIL_PASSWORD SMTP password
Demo User
DEMO_PASSWORD Password for demo profile (if enabled)
Cache / Redis
CACHE_TTL_MIN Cache duration (min) 5
REDIS_ENABLED Enables Redis usage; false for dev, required for prod false (dev) / true (prod)
REDIS_URL Redis connection string redis://localhost:6379
Authentication
BETTER_AUTH_SECRET Secret used by Better Auth for encryption
OAuth2 Providers
GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET GitHub OAuth2 credentials
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET Google OAuth2 credentials
API Keys
THEMOVIEDB_API_KEY API key for TMDB
GOOGLE_BOOKS_API_KEY API key for Google Books
IGDB_CLIENT_ID / IGDB_CLIENT_SECRET IGDB OAuth credentials
LLM Integration (Optional)
LLM_MODEL_ID Model ID (OpenRouter or local) used to generate book genres google/gemini-2.5-flash-lite
LLM_BASE_URL Base URL for the chosen LLM API https://openrouter.ai/api/v1
LLM_API_KEY API key or local access token for the LLM provider

Redis Setup

Redis caching is optional for dev and mandatory for prod.

  • In dev, set:
    REDIS_ENABLED=false
  • In prod, ensure Redis is available and configured:
    REDIS_ENABLED=true
    REDIS_URL=redis://your-redis-instance:6379

Redis is used for caching, session/state management, and performance optimization. The app will not build without it (but it can be changed of course, you do you :)).


LLM Integration (Optional)

The LLM is exclusively used to generate genre data for books since Google Books does not provide genre metadata. You can choose how this background task runs:

  1. Manually, by executing it with the CLI
  2. Automatically, using a scheduled cron job

Contributing

Contributions are welcome!
If you'd like to improve MyLists, fork the repo, create a feature branch, and open a pull request.


License

This project is licensed under the MIT License.


Built with using Bun, Drizzle, Better-Auth, React, TypeScript, and TanStack.

About

MyLists: organize series, anime, movies, games, books and manga, all in one place.

Topics

Resources

Readme

Stars

Watchers

Forks

Contributors

Languages