| 1870420e-e40d-4f12-9cc2-5858f23c42fc |
| 1870420e-e40d-4f12-9cc2-5858f23c42fc |
| draft |
| src/api/routes/users.ts | b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1bcde | import { Hono } from "hono"; import { db } from "../../db/connection"; import { users } from "../../db/schema"; import { eq } from "drizzle-orm"; export const userRoutes = new Hono(); userRoutes.get... | typescript | 2026-03-08T10:15:00Z | 8c57a301-ca28-4c52-9bbd-9f18fe3559a3 | linted |
| src/auth/jwt.ts | e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6 | import { SignJWT, jwtVerify } from "jose"; import { config } from "../config"; const secret = new TextEncoder().encode(config.JWT_SECRET); export async function signToken(payload: { sub: string; rol... | typescript | 2026-03-08T08:20:00Z | 1870420e-e40d-4f12-9cc2-5858f23c42fc | approved |
| src/auth/middleware.ts | f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1 | import { Context, Next } from "hono"; import { verifyToken } from "./jwt"; const PUBLIC_PATHS = ["/api/health", "/api/auth/login"]; export async function authMiddleware(c: Context, next: Next) { i... | typescript | 2026-03-08T09:45:00Z | 8c57a301-ca28-4c52-9bbd-9f18fe3559a3 | linted |
| src/config.ts | b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3 | import { z } from "zod"; const envSchema = z.object({ PORT: z.coerce.number().default(3000), DATABASE_URL: z.string().url(), JWT_SECRET: z.string().min(32), RATE_LIMIT_WINDOW_MS: z.coerce.num... | typescript | 2026-03-08T07:45:00Z | 1870420e-e40d-4f12-9cc2-5858f23c42fc | approved |
| src/db/connection.ts | d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5 | import { drizzle } from "drizzle-orm/node-postgres"; import { Pool } from "pg"; import { config } from "../config"; import * as schema from "./schema"; const pool = new Pool({ connectionString: confi... | typescript | 2026-03-08T08:00:00Z | 1870420e-e40d-4f12-9cc2-5858f23c42fc | approved |
| src/db/schema.ts | c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 | import { pgTable, uuid, text, timestamp, boolean, integer } from "drizzle-orm/pg-core"; export const users = pgTable("users", { id: uuid("id").primaryKey().defaultRandom(), email: text("email").n... | typescript | 2026-03-08T09:30:00Z | 8c57a301-ca28-4c52-9bbd-9f18fe3559a3 | reviewed |
| src/index.ts | a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 | import { Hono } from "hono"; import { authMiddleware } from "./auth/middleware"; import { taskRoutes } from "./api/routes/tasks"; import { userRoutes } from "./api/routes/users"; import { healthRoutes... | typescript | 2026-03-08T08:12:00Z | 1870420e-e40d-4f12-9cc2-5858f23c42fc | approved |
| src/utils/errors.ts | e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4ijkl | export class AppError extends Error { constructor( message: string, public statusCode: number = 500, public code: string = "INTERNAL_ERROR" ) { super(message); this.name = "App... | typescript | 2026-03-08T08:05:00Z | 1870420e-e40d-4f12-9cc2-5858f23c42fc | approved |
| src/utils/validate.ts | d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3efgh | import { z, ZodSchema } from "zod"; import { Context } from "hono"; export function validateBody<T>(schema: ZodSchema<T>) { return async (c: Context) => { try { const body = await c.req.j... | typescript | 2026-03-08T09:50:00Z | 8c57a301-ca28-4c52-9bbd-9f18fe3559a3 | reviewed |
Path | Status | Checksum | Content | Language | Last Modified | Last Modified By | Locked By |
|---|