chore: initial project setup
- Add package.json with dependencies and scripts - Configure TypeScript with tsconfig.json - Set up Jest for testing - Add Dockerfile and nixpacks.toml for deployment - Add prisma.config.ts for Prisma configuration
This commit is contained in:
commit
691c035130
|
|
@ -0,0 +1,18 @@
|
||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
RUN corepack enable && corepack prepare pnpm@10.33.0 --activate
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
|
||||||
|
RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
COPY prisma ./prisma
|
||||||
|
COPY prisma.config.ts ./
|
||||||
|
|
||||||
|
RUN pnpm prisma generate
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
CMD ["sh", "-c", "pnpm prisma migrate deploy && pnpm run start"]
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
import type { Config } from "jest";
|
||||||
|
|
||||||
|
const config: Config = {
|
||||||
|
preset: "ts-jest",
|
||||||
|
testEnvironment: "node",
|
||||||
|
roots: ["<rootDir>/test"],
|
||||||
|
moduleFileExtensions: ["ts", "js", "json"],
|
||||||
|
transform: {
|
||||||
|
"^.+\\.ts$": [
|
||||||
|
"ts-jest",
|
||||||
|
{
|
||||||
|
tsconfig: {
|
||||||
|
target: "ES2022",
|
||||||
|
module: "ESNext",
|
||||||
|
moduleResolution: "bundler",
|
||||||
|
esModuleInterop: true,
|
||||||
|
strict: true,
|
||||||
|
skipLibCheck: true,
|
||||||
|
resolveJsonModule: true,
|
||||||
|
types: ["jest", "node"],
|
||||||
|
},
|
||||||
|
diagnostics: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
moduleNameMapper: {
|
||||||
|
"^(\\.{1,2}/.*)\\.js$": "$1",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[phases.build]
|
||||||
|
cmds = ["pnpm prisma generate", "pnpm prisma migrate deploy"]
|
||||||
|
|
||||||
|
[phases.start]
|
||||||
|
cmd = "pnpm run start"
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"name": "task-challenge-bk",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Task management API with Hono",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "tsx watch src/index.ts",
|
||||||
|
"start": "tsx src/index.ts",
|
||||||
|
"start:prod": "node dist/index.js",
|
||||||
|
"build": "tsc",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"test": "jest",
|
||||||
|
"test:watch": "jest --watch",
|
||||||
|
"db:migrate": "pnpm prisma migrate dev",
|
||||||
|
"db:seed": "tsx prisma/seed.ts",
|
||||||
|
"db:reset": "pnpm prisma migrate reset --force && pnpm db:seed",
|
||||||
|
"db:studio": "pnpm prisma studio"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"packageManager": "pnpm@10.33.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@hono/node-server": "^2.0.2",
|
||||||
|
"@prisma/adapter-pg": "^7.8.0",
|
||||||
|
"@prisma/client": "^7.8.0",
|
||||||
|
"dotenv": "^17.4.2",
|
||||||
|
"hono": "^4.12.18",
|
||||||
|
"pg": "^8.20.0",
|
||||||
|
"prisma": "^7.8.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/jest": "^30.0.0",
|
||||||
|
"@types/node": "^25.7.0",
|
||||||
|
"@types/pg": "^8.20.0",
|
||||||
|
"jest": "^30.4.2",
|
||||||
|
"ts-jest": "^29.4.9",
|
||||||
|
"tsx": "^4.21.0",
|
||||||
|
"typescript": "^6.0.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,15 @@
|
||||||
|
// This file was generated by Prisma, and assumes you have installed the following:
|
||||||
|
// npm install --save-dev prisma dotenv
|
||||||
|
import "dotenv/config";
|
||||||
|
import { defineConfig } from "prisma/config";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
schema: "prisma/schema.prisma",
|
||||||
|
migrations: {
|
||||||
|
path: "prisma/migrations",
|
||||||
|
seed: "tsx prisma/seed.ts",
|
||||||
|
},
|
||||||
|
datasource: {
|
||||||
|
url: process.env["DATABASE_URL"],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2022",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"strict": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"outDir": "./dist",
|
||||||
|
"rootDir": "./src",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"types": ["node"]
|
||||||
|
},
|
||||||
|
"include": ["src/**/*"],
|
||||||
|
"exclude": ["node_modules", "dist"]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue