AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Retrieve portfolio data including skills, projects, and experience via REST API
Translation pending
AI summary · website and README
Developer toolsTypeScript · RustGitHub @shinguakiraOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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 TypeScriptRead the full 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.
| 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