Initial project scaffolding

This commit is contained in:
Axel Meyer
2026-04-07 10:09:51 +00:00
commit 5a19864fb5
9 changed files with 4016 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
node_modules/
dist/
dist-server/
*.log
tiles/
data/*.db

16
index.html Normal file
View File

@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hexifyer</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
</head>
<body>
<div id="app">
<aside id="sidebar"></aside>
<div id="map"></div>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

3881
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

33
package.json Normal file
View File

@@ -0,0 +1,33 @@
{
"name": "hexifyer",
"version": "0.1.0",
"description": "Hex grid overlay tool for fantasy maps",
"private": true,
"type": "module",
"scripts": {
"dev": "concurrently \"vite\" \"tsx watch server/index.ts\"",
"build": "vite build",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest",
"server": "tsx server/index.ts",
"pipeline:tiles": "tsx pipeline/generate-tiles.ts"
},
"devDependencies": {
"@types/cors": "^2.8.19",
"@types/express": "^5.0.6",
"@types/leaflet": "^1.9.21",
"sharp": "^0.33.0",
"tsx": "^4.19.0",
"typescript": "^5.7.0",
"vite": "^6.0.0",
"vitest": "^3.0.0"
},
"dependencies": {
"concurrently": "^9.2.1",
"cors": "^2.8.6",
"express": "^5.2.1",
"leaflet": "^1.9.4",
"sql.js": "^1.14.1"
}
}

24
tsconfig.json Normal file
View File

@@ -0,0 +1,24 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"isolatedModules": true,
"skipLibCheck": true,
"esModuleInterop": true,
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"outDir": "dist",
"rootDir": ".",
"baseUrl": ".",
"paths": {
"@/*": ["src/*"],
"@core/*": ["core/*"]
},
"types": ["vitest/globals"]
},
"include": ["src", "core", "tests", "vite-env.d.ts"]
}

14
tsconfig.server.json Normal file
View File

@@ -0,0 +1,14 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"outDir": "dist-server",
"rootDir": ".",
"esModuleInterop": true,
"skipLibCheck": true,
"strict": false,
"noImplicitAny": false
},
"include": ["server/**/*.ts", "core/**/*.ts"]
}

1
vite-env.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
/// <reference types="vite/client" />

27
vite.config.ts Normal file
View File

@@ -0,0 +1,27 @@
import { defineConfig } from 'vite';
import { resolve } from 'path';
export default defineConfig({
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@core': resolve(__dirname, 'core'),
},
},
build: {
outDir: 'dist',
},
server: {
port: 5173,
proxy: {
'/api': {
target: 'http://localhost:3001',
changeOrigin: true,
},
'/tiles': {
target: 'http://localhost:3001',
changeOrigin: true,
},
},
},
});

14
vitest.config.ts Normal file
View File

@@ -0,0 +1,14 @@
import { defineConfig } from 'vitest/config';
import { resolve } from 'path';
export default defineConfig({
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@core': resolve(__dirname, 'core'),
},
},
test: {
globals: true,
},
});