{"id":51016765,"url":"https://github.com/na-ive/naivestream","last_synced_at":"2026-06-21T11:31:36.533Z","repository":{"id":364017951,"uuid":"1265848536","full_name":"na-ive/naivestream","owner":"na-ive","description":"Personal anime streaming frontend built with Next.js. Browse, search, and watch anime with smart catalog and scheduling.","archived":false,"fork":false,"pushed_at":"2026-06-11T09:13:04.000Z","size":6364,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T10:25:22.125Z","etag":null,"topics":["anilist","anime","anime-streaming","better-sqlite3","nextjs","streaming","tailwindcss"],"latest_commit_sha":null,"homepage":"https://naivestream.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/na-ive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-11T06:07:07.000Z","updated_at":"2026-06-11T09:21:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/na-ive/naivestream","commit_stats":null,"previous_names":["na-ive/naivestream"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/na-ive/naivestream","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-ive%2Fnaivestream","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-ive%2Fnaivestream/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-ive%2Fnaivestream/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-ive%2Fnaivestream/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/na-ive","download_url":"https://codeload.github.com/na-ive/naivestream/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/na-ive%2Fnaivestream/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34608892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anilist","anime","anime-streaming","better-sqlite3","nextjs","streaming","tailwindcss"],"created_at":"2026-06-21T11:31:35.434Z","updated_at":"2026-06-21T11:31:36.526Z","avatar_url":"https://github.com/na-ive.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"./public/naivestream_logo.png\" alt=\"NaiveStream\" width=\"480\"/\u003e\n\n\u003c/br\u003e\n\n[![Stars](https://img.shields.io/github/stars/na-ive/naivestream?style=for-the-badge\u0026logo=github\u0026color=c6a0f6\u0026logoColor=D9E0EE\u0026labelColor=303446)](https://github.com/na-ive/naivestream/stargazers)\n[![Last Commit](https://img.shields.io/github/last-commit/na-ive/naivestream?style=for-the-badge\u0026logo=git\u0026color=8bd5ca\u0026logoColor=D9E0EE\u0026labelColor=303446)](https://github.com/na-ive/naivestream/commits/main)\n[![Repo Size](https://img.shields.io/github/repo-size/na-ive/naivestream?style=for-the-badge\u0026logo=file\u0026color=8caaee\u0026logoColor=D9E0EE\u0026labelColor=303446)](https://github.com/na-ive/naivestream)\n[![License](https://img.shields.io/badge/License-MIT-a6da95?style=for-the-badge\u0026logo=license\u0026logoColor=D9E0EE\u0026labelColor=303446)](LICENSE)\n[![Support](https://img.shields.io/badge/SUPPORT-TAKO-FF69B4?style=for-the-badge\u0026logo=kofi\u0026logoColor=white\u0026labelColor=555555)](https://tako.id/naive)\n\n\u003c/div\u003e\n\n\n## Key Features\n\n- **Hero Carousel:** Auto-rotating spotlight of trending ongoing anime with airing schedules.\n- **Smart Sections:** Homepage sections for ongoing, completed, and daily schedule — intelligently sorted.\n- **Advanced Search:** Full-text search with filters for status, type, genre, season, year, studio, rating, and more.\n- **A–Z Listing:** Alphabetical browse with letter pagination.\n- **Anime Detail Pages:** Synopsis, genres, characters \u0026 voice actors, episode list, and similar recommendations.\n- **Video Player:** Integrated episode watching with source switching (Otakudesu / Samehadaku).\n- **Continue Watching:** Pick up where you left off — progress saved locally in your browser.\n- **Library:** Local watchlist and watch history management — no account required.\n- **Dark Theme:** Cyberpunk-inspired visual design with subtle neon accents.\n- **Responsive:** Fully adaptive layout for desktop, tablet, and mobile.\n\n## Tech Stack\n\n| Layer | Technology |\n| :--- | :--- |\n| **Framework** | Next.js 16 (App Router) |\n| **UI Library** | React 19 |\n| **Styling** | Tailwind CSS 4 |\n| **Typography** | Exo 2 + Orbitron |\n| **Database** | SQLite 3 via `better-sqlite3` |\n| **Animations** | Framer Motion |\n| **Icons** | Carbon Icons |\n| **Player** | Embedded iframe from external sources |\n\n## Database Schema\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand — SQLite schema (8 tables)\u003c/summary\u003e\n\n```sql\n-- Core anime metadata\nCREATE TABLE anime (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    slug            TEXT UNIQUE NOT NULL,\n    mal_id          INTEGER,\n    title           TEXT NOT NULL,\n    title_english   TEXT,\n    title_japanese  TEXT,\n    title_synonyms  TEXT,\n    type            TEXT,\n    status          TEXT,\n    season          TEXT,\n    year            INTEGER,\n    score           REAL DEFAULT 0.0,\n    scored_by       INTEGER DEFAULT 0,\n    members         INTEGER DEFAULT 0,\n    popularity      INTEGER,\n    rank            INTEGER,\n    synopsis        TEXT,\n    poster          TEXT,\n    duration_minutes INTEGER,\n    episodes_count  INTEGER,\n    aired           TEXT,\n    producers       TEXT,\n    studios         TEXT,\n    rating          TEXT,\n    source          TEXT,\n    release_day     TEXT,\n    youtube_trailer_id TEXT,\n    anilist_id      INTEGER,\n    banner          TEXT,\n    next_episode    INTEGER,\n    next_airing_at  INTEGER,\n    is_fully_scraped INTEGER DEFAULT 0,\n    is_protected    INTEGER DEFAULT 0,\n    last_updated    DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Episodes linked to each anime\nCREATE TABLE episodes (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    anime_id        INTEGER NOT NULL,\n    slug            TEXT UNIQUE NOT NULL,\n    title           TEXT NOT NULL,\n    eps_number      REAL,\n    uploaded_at     TEXT,\n    FOREIGN KEY (anime_id) REFERENCES anime(id) ON DELETE CASCADE\n);\n\n-- Genres (normalized)\nCREATE TABLE genres (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    name            TEXT UNIQUE NOT NULL,\n    slug            TEXT UNIQUE NOT NULL\n);\n\nCREATE TABLE anime_genres (\n    anime_id        INTEGER NOT NULL,\n    genre_id        INTEGER NOT NULL,\n    PRIMARY KEY (anime_id, genre_id),\n    FOREIGN KEY (anime_id) REFERENCES anime(id) ON DELETE CASCADE,\n    FOREIGN KEY (genre_id) REFERENCES genres(id) ON DELETE CASCADE\n);\n\n-- Characters \u0026 Voice Actors\nCREATE TABLE characters (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    anilist_id      INTEGER UNIQUE,\n    name            TEXT NOT NULL,\n    image           TEXT\n);\n\nCREATE TABLE anime_characters (\n    anime_id        INTEGER NOT NULL,\n    character_id   INTEGER NOT NULL,\n    role            TEXT,\n    PRIMARY KEY (anime_id, character_id),\n    FOREIGN KEY (anime_id) REFERENCES anime(id) ON DELETE CASCADE,\n    FOREIGN KEY (character_id) REFERENCES characters(id) ON DELETE CASCADE\n);\n\nCREATE TABLE voice_actors (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    anilist_id      INTEGER UNIQUE,\n    name            TEXT NOT NULL,\n    image           TEXT,\n    language        TEXT\n);\n\nCREATE TABLE character_voice_actors (\n    anime_id        INTEGER NOT NULL,\n    character_id   INTEGER NOT NULL,\n    voice_actor_id  INTEGER NOT NULL,\n    PRIMARY KEY (anime_id, character_id, voice_actor_id),\n    FOREIGN KEY (anime_id) REFERENCES anime(id) ON DELETE CASCADE,\n    FOREIGN KEY (character_id) REFERENCES characters(id) ON DELETE CASCADE,\n    FOREIGN KEY (voice_actor_id) REFERENCES voice_actors(id) ON DELETE CASCADE\n);\n\n-- Stream link cache\nCREATE TABLE stream_cache (\n    id              INTEGER PRIMARY KEY AUTOINCREMENT,\n    episode_slug    TEXT NOT NULL,\n    quality         TEXT,\n    server_name     TEXT,\n    iframe_url      TEXT,\n    created_at      DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n```\n\u003c/details\u003e\n \n## Getting Started\n\n### Prerequisites\n\n- **Node.js** \u003e= 20\n- **npm** or any compatible package manager\n\n### Installation\n\n```bash\ngit clone https://github.com/your-username/naivestream.git\ncd naivestream\nnpm install\n```\n\nPlace your `anime.db` file in the project root, or set the `DATABASE_PATH` environment variable.\n\n### Development\n\n```bash\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.\n\n### Production Build\n\n```bash\nnpm run build\nnpm start\n```\n\n## Environment Variables\n\n| Variable | Default | Description |\n| :--- | :--- | :--- |\n| `DATABASE_PATH` | `./anime.db` | Path to the SQLite database file |\n\n## Screenshots\n\n| Homepage | Ongoing |\n| :---: | :---: |\n| ![Homepage](./public/screenshot1.png) | ![Ongoing](./public/screenshot2.png) |\n\n| Anime Detail | Watch |\n| :---: | :---: |\n| ![Detail](./public/screenshot3.png) | ![Watch](./public/screenshot4.png) |\n\n## Credits\n\n- **Content API:** [Sanka API](https://github.com/SankaVollereii) — Episode metadata and streaming sources\n- **Metadata:** AniList \u0026 MyAnimeList\n- **Icons:** [Carbon Icons](https://carbondesignsystem.com/guidelines/icons/library/)\n- **Fonts:** Exo 2 \u0026 Orbitron via Google Fonts\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-ive%2Fnaivestream","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fna-ive%2Fnaivestream","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fna-ive%2Fnaivestream/lists"}