Skip to content

nightrunner91/listify

Repository files navigation

Listify

Your personal media collection. Always accessible, entirely yours.

Listify Preview

English | Russian

Version License Node Version Vue Version Fastify PostgreSQL Drizzle ORM


What is it?

Listify is a sleek, modern media tracker designed for those who want to keep their collections organized without the clutter of social features or ads. Whether you're logging games, movies, books, or anything in between, Listify provides an intuitive and fast UI to manage your personal library.

Built from the ground up as the successor to Nightlist, it leverages Vue 3, Fastify, and PostgreSQL to deliver a fast, secure, and highly customizable experience.

Key Features

  • Create & Manage Lists — Organize games, films, TV shows, anime, manga, books, and music.
  • Share Your Collections — Personalized public profiles for your library.
  • Intuitive UI — Lightweight design powered by Naive UI.
  • Data Sovereignty — Full export/import capabilities, no lock-in.
  • Privacy Focused — No ads, no trackers, and no third-party data sharing.
  • High Performance — Lightning fast, optimized Vue 3 / Vite and a lightweight Fastify backend.
  • Open-source — Inspect, fork, or self-host the entire project.
  • Multi-Language Support — EN, DE, ES, FR, PL, RO, RU, UK.

Tech Stack

Component Technology Description
Frontend Vue 3 Composition API & Script Setup
Backend Fastify High-performance Node.js framework
Database PostgreSQL Relational database via Drizzle ORM
Styling Naive UI Curated component library & design system
State Pinia Modern Vue store management
Build Vite Next-generation frontend tooling

External Data Sources

Listify integrates with several high-quality external APIs to provide instant autocompletion and rich metadata for your collections:

  • RAWG API: The primary source for the Games category.
  • TMDB API: Powers discovery for Films and TV Shows.
  • Jikan API: A free, open-source API for the MyAnimeList DB, used for Anime and Manga.
  • iTunes API: Provides a reliable catalog for Books and Music.

Important

Some providers (RAWG, TMDB) require an API key. If you're hosting your own application ensure these are correctly configured in your api/.env file to enable autocompletion features.

Getting Started

Prerequisites

  • Node.js >= 20.0.0
  • npm >= 9.0.0
  • PostgreSQL (running locally or via Docker)

1. Clone & Install

git clone https://github.com/nightrunner91/listify.git
cd listify
npm install
cd api && npm install && cd ..

2. Environment Setup

Create a .env file in the api/ directory:

cp api/.env.example api/.env

Edit api/.env with your database credentials and secret keys.

3. Database Migration

cd api
npm run db:generate
npm run db:migrate

4. Run Development Servers

Frontend:

npm run dev

Backend:

cd api
npm run dev
npm run db:studio

Project Structure

.
├── api/                    # Backend (Node.js + Fastify)
│   ├── src/
│   │   ├── db/             # Database connection & Drizzle schemas
│   │   ├── routes/         # API endpoints (Auth, Records, Lists)
│   │   ├── plugins/        # Fastify plugins (i18n, Rate limit, etc.)
│   │   ├── middleware/     # Custom Fastify hooks
│   │   ├── services/       # Business logic layer
│   │   └── app.js          # Fastify application setup
│   └── drizzle/            # SQL migration files
│
├── src/                    # Frontend (Vue 3 + Vite)
│   ├── api/                # API client configuration
│   ├── components/         # Reusable UI components
│   ├── features/           # Feature-based components & logic
│   ├── i18n/               # Localization files
│   ├── router/             # Vue Router configuration
│   ├── stores/             # Pinia state management
│   ├── views/              # Main application pages
│   └── theme.config.js     # Naive UI theme overrides
├── public/                 # Static assets & favicon
└── package.json            # Root scripts & dependencies

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.


Built with ❤ by nightrunner91

About

Listify is designed to track your favorite entertainment choices, whether it's games, films, anime, books, or anything else.

Topics

Resources

License

Stars

Watchers

Forks

Contributors