AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A multi-backend RESTful API that serves portfolio data for the portfolio website. Implemented in four languages — TypeScript, Go, Rust, and Haskell — all returning identical JSON responses. Bilingual (Japanese/English) support via ?lang=en query parameter.
TypeScript is the source of truth. All other backends mirror its data and response format.
All endpoints are under /api/ and return JSON. Most support ?lang=en for English (default: Japanese).
bash
cd ts
npm install
npm run dev # Start dev server on port 3004
npm test # Run tests (vitest)
npm run build # Compile TypeScriptREADME 전문 보기 ↗A multi-backend RESTful API that serves portfolio data for the portfolio website. Implemented in four languages — TypeScript, Go, Rust, and Haskell — all returning identical JSON responses. Bilingual (Japanese/English) support via ?lang=en query parameter.
| Backend | Framework | Port | Directory |
|---|---|---|---|
| TypeScript | ElysiaJS | 3004 | ts/ |
| Go | Chi | 3005 | go/ |
| Rust | Actix Web | 3006 | rust/ |
| Haskell | Scotty | 3007 | haskell/ |
TypeScript is the source of truth. All other backends mirror its data and response format.
All endpoints are under /api/ and return JSON. Most support ?lang=en for English (default: Japanese).
| Endpoint | Description |
|---|---|
GET / | Welcome message with endpoint list |
GET /health | Health check |
GET /api/profile | Personal profile |
GET /api/experience | Professional experience |
GET /api/projects | Project portfolio |
GET /api/skills | Technical skills |
GET /api/other-skills | Other skills |
GET /api/education | Educational background |
GET /api/contact | Contact information |
GET /api/certifications | Certifications |
GET /api/changelogs | Changelogs |
GET /api/faqs | FAQs |
GET /api/links | External links |
GET /api/strong-points | Strong points |
GET /api/notifications | Notifications |
GET /api/articles | Articles (fetched from Qiita) |
GET /api/download-pdf | Download resume as PDF (?format=compact|executive|technical|academic|modern) |
portfolio-api/
├── ts/ # TypeScript backend (source of truth)
├── go/ # Go backend
├── rust/ # Rust backend
├── haskell/ # Haskell backend
├── packages/ # Shared type package (@shinguakira/portfolio-api-types)
├── public/images/ # Production images (served by Vercel)
├── scripts/ # Utility scripts (image sync, etc.)
└── vercel.json # Vercel deployment config
cd ts
npm install
npm run dev # Start dev server on port 3004
npm test # Run tests (vitest)
npm run build # Compile TypeScript
cd go
go mod tidy
go run . # Start REST (port 3005) + gRPC (port 50051) servers
go test ./... # Run tests
The Go backend also exposes the same data over gRPC (default port 50051,
override with GRPC_PORT) alongside REST. Server reflection and the standard
health service are enabled. See go/docs/grpc-guide-ja.md
for a beginner-friendly explanation (terminology, REST vs gRPC, how to regenerate
code and test with grpcurl).
cd rust
cargo run # Start server on port 3006
cargo test # Run tests
cd haskell
stack build
stack exec portfolio-api-haskell # Start server on port 3007
stack test # Run tests
Deployed on Vercel. The vercel.json routes:
/images/* → public/images/ (static assets)/icons/* → ts/public/icons/ (static assets)/api/* and / → TypeScript backendRoot public/images/ is the production source of truth. Use the sync script to keep ts/public/images/ in sync for local dev:
node scripts/sync-public.mjs # Sync root → ts
node scripts/sync-public.mjs --reverse # Sync ts → root
node scripts/sync-public.mjs --dry-run # Preview changes
MIT