Back to projects
sys://project.detail

Keiyomi

2024-05-14
SvelteKit 5ElysiaJSBunPostgresQL

//The next generation of light novel tracking. Dive into a vast library, track, review, and connect with fellow enthusiasts.

Keiyomi: The Next Generation of Light Novel Tracking

Keiyomi is a comprehensive platform designed to help users dive into a vast library of light novels. Built to be more than just a reading tool, it serves as a central hub for enthusiasts to track their progress, review their favorite series, and connect with a dedicated community.

Core Features

  • Vast Library: Explore and track hundres of light novels across various genres and categories.
  • Community Hub: Engage in discussions, share thoughts, and connect with other light novel enthusiasts.
  • Rate & Review: Leave detailed reviews, rate series, and help others discover their next favorite read.
  • Smart Recommendations: Get personalized, curated suggestions tailored specifically to your reading history and interests.

The Architecture

Under the hood, Keiyomi is powered by a bleeding-edge, full-stack TypeScript ecosystem designed for maximum performance and developer velocity.

  • Frontend: SvelteKit 5 provides the reactivity and server-side rendering required for instant page loads.
  • Backend: Built on Bun and ElysiaJS, the API handles thousands of simultaneous requests with sub-millisecond latency.
  • Database: PostgreSQL paired with Drizzle ORM ensures type-safe schema management and lightning-fast complex queries for content filtering and user libraries.
1234567891011121314151617181920212223242526272829303132333435
const app = new Elysia({ prefix: '/api' })
  .use(
    openapi({
      documentation: {
        info: {
          title: 'Keiyomi API Documentation',
          version: '1.0.0'
        },
        tags: [{ name: 'Series', description: 'Series endpoints' }],
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        components: (await OpenAPI.getComponents()) as any,
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        paths: (await OpenAPI.getPaths()) as any
      }
    })
  )

  .use(betterAuth)
  .use(seriesRoute)
  .use(profileRoute)
  .use(libraryRoute)
  .use(reviewsRoute)
  .use(recommendationsRoute)
  .use(reportsRoute)
  .use(activitiesRoute)
  .use(statsRoute)

  .get('/', () => 'ok')
  .post('/', ({ body }) => body, {
    body: t.Object({
      name: t.String()
    })
  });
  
export type App = typeof app;

Design Philosophy

The application’s interface is built on standard Tailwind CSS and shadcn-svelte, adhering to a strict “content-first” methodology.

“Keiyomi proves that utility-first web applications can be blazing fast and visually striking, ensuring the reading experience always takes precedence.”