chore: init project with Fastify and TypeScript

Made-with: Cursor
This commit is contained in:
Anton
2026-03-04 13:36:12 +03:00
commit cfadcd9292
5 changed files with 6129 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
node_modules
dist
.env
*.log
.DS_Store
coverage
.vitest
*.tsbuildinfo

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
20

6043
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

51
package.json Normal file
View File

@@ -0,0 +1,51 @@
{
"name": "samreshu-backend",
"version": "0.1.0",
"description": "Backend API for samreshu knowledge testing platform",
"type": "module",
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"dev": "tsx watch src/server.ts",
"start": "node dist/server.js",
"db:generate": "drizzle-kit generate --config=drizzle.config.ts",
"db:migrate": "tsx src/db/migrate.ts",
"db:studio": "drizzle-kit studio",
"db:seed": "tsx src/db/seed.ts",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"lint": "eslint src --ext .ts",
"lint:fix": "eslint src --ext .ts --fix",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@fastify/cors": "^10.0.0",
"@fastify/helmet": "^12.0.0",
"@fastify/rate-limit": "^10.0.0",
"argon2": "^0.41.0",
"dotenv": "^17.3.1",
"drizzle-orm": "^0.36.0",
"fastify": "^5.0.0",
"fastify-plugin": "^4.5.0",
"ioredis": "^5.4.0",
"jose": "^5.9.0",
"pg": "^8.13.0",
"pino": "^9.5.0",
"pino-pretty": "^13.0.0",
"zod": "^3.23.0"
},
"devDependencies": {
"@types/node": "^22.0.0",
"@types/pg": "^8.11.0",
"@vitest/coverage-v8": "^2.0.0",
"drizzle-kit": "^0.28.0",
"eslint": "^9.0.0",
"tsx": "^4.19.0",
"typescript": "^5.6.0",
"vitest": "^2.0.0"
},
"engines": {
"node": ">=20"
}
}

26
tsconfig.json Normal file
View File

@@ -0,0 +1,26 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"lib": ["ES2022"],
"outDir": "dist",
"rootDir": "src",
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"esModuleInterop": true,
"skipLibCheck": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist", "tests"]
}