Open Japan Politech Platform
æ¿å ã»äŒæ¥ã«ãããªãæ¿æ²»ã®ããžã¿ã«åãªãŒãã³ãœãŒã¹åºç€
Ask AI about Open Japan Politech Platform
Powered by Claude · Grounded in docs
I know everything about Open Japan Politech Platform. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Open Japan PoliTech Platform
AIãšãŒãžã§ã³ãæä»£ã®æ¿æ²»ã€ã³ãã©
æ¿å ã«ãäŒæ¥ã«ããããªããå®å šãªãŒãã³ãªæ¿æ²»ãã¯ãããžãŒåºç€
1è¡ã§èµ·å | 7ã€ã®ã¢ã㪠| API仿§ | è«æ | Contributing
[!NOTE] v0.1 ã®ããŒã¿ã¯å ¬çæ©é¢ã®å ¬éè³æã«åºã¥ãå®ããŒã¿ã§ãã 詳现ã¯ããŒã¿ãœãŒã¹ã»æ ¹æ äžèЧãåç §ããŠãã ããã
1è¡ã§èµ·å
curl -fsSL https://ojpp.dev/install | sh
å¿ èŠãªãã®: Docker ãš Git ã ããNode.js / pnpm ã¯èªåã€ã³ã¹ããŒã«ãããŸãã
忢
Ctrl+C/ åèµ·åbash setup.sh/ DBåé€docker compose down -v
ãªã PoliTech ã
æ¿æ²»ã¯é·ããæ¿å ãšäŒæ¥ã®å°æç©ã ã£ãã
AIãšãŒãžã§ã³ãã®æä»£ãããã®æ§é ãå€ããã
ããªãã®AIãšãŒãžã§ã³ããã24æé365æ¥ãå šæ¿å ã®æ¿æ²»è³éãç£èŠãããå šæ¿å ã®æ¿ç倿Žã远跡ããå·®åãå±ãããå šæ³æ¡ãèªã¿ãããªãã«åœ±é¿ã®ããéšåãèŠçŽãããæ¿å ã«å±ããªããŠããäŒæ¥ã®ããã€ã¹ããéããªããŠããå°éå®¶ã§ãªããŠãââAIãšãŒãžã§ã³ããããªãã®ä»£ããã«æ¿æ²»ãèªã¿è§£ããããªãã«å±ããã
GovTechïŒè¡æ¿DXïŒã§ãCivicTechïŒåžæ°æè¡ïŒã§ããªããæ¿æ²»ã®æææ±ºå®ããã»ã¹ãã®ãã®ãããã¹ãŠã®äººã«éããã¯ãããžãŒã
| GovTech | CivicTech | PoliTech | |
|---|---|---|---|
| åã | 決ãŸã£ãæ¿çãããã«å±ããã | åžæ°ãããã«åå ããã | AIãšãŒãžã§ã³ãæä»£ã«ã誰ããæ¿æ²»ããã»ã¹ãå®è¡ã»äº«åããã«ã¯ |
| äž»äœ | æ¿åº | åžæ°ç€ŸäŒ | åžæ° + AIãšãŒãžã§ã³ã |
| æä»£ | é»åæ¿åºæä»£ | Web 2.0æä»£ | AIãšãŒãžã§ã³ãæä»£ |
7ã€ã®åå
1 ãšãŒãžã§ã³ããã¡ãŒã¹ã â AIã®åå ãåæã«èšèš 2 éå æŽŸæ§ â å šæ¿å ãçããæ±ã 3 éäŒæ¥æ§ â äŒæ¥ãéå¶ããªã 4 å®å šãªãŒãã³ â AGPL-3.0-or-later 5 誰ã§ãåå â 人éã§ãAIã§ã 6 è°åžäžèŠ â ã€ã³ãã©ã¯åžæ°ãšãšãŒãžã§ã³ããäœã 7 æç¶æ§ â ãã©ãŒã¯å¯èœã§åæ£ç
Portal + 7 Apps
OJPP Portal :3008
Political Command Center â å šãµãŒãã¹äžèЧããã·ã¥ããŒã
WebGPUæµäœã·ã§ãŒã㌠à ã¬ã€ã³ããŒã°ã©ããŒã·ã§ã³ Ã æ¥æ¬å°å³ããŒã¿ããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ã7ã€ã®ãµãŒãã¹ã¢ããªã®ãªã¢ã«ã¿ã€ã KPIãäžæããã³ãã³ãã»ã³ã¿ãŒã
WebGPU æµäœã·ãã¥ã¬ãŒã·ã§ã³ ãªã¢ã«ã¿ã€ã KPI 7ãµãŒãã¹çµ±å
BroadListening β :3009
æèŠãçæ ç³»ãšããŠå¯èŠåãã
åžæ°ã®æèŠãããžã¿ã«çæ ç³»ãšããŠã¢ããªã³ã°ãArgument MiningïŒLLMïŒã§è°è«æ§é ãèªåæœåºããããžã¿ã«ãã§ãã¢ã³ïŒStigmergyïŒã§æ¯æã®è»è·¡ãèšé²ãé©å¿åºŠã©ã³ãã¹ã±ãŒããšShannon倿§æ§ææ°ã§ã¯ãªãŒã©ã ã»ã³ã·ã³ã°ã«ãããã§ãŒãºèªåé·ç§»ã倿°æ±ºã§ã¯ãªããèªå·±çµç¹åçåæåœ¢æã
5ããã㯠200+æèŠ k-means++ã¯ã©ã¹ã¿ãªã³ã° TF-IDFåã蟌㿠ãã§ãã¢ã³æžè¡°
MoneyGlass
|
PolicyDiff
|
ParliScope
|
SeatMap
|
CultureScope
|
SocialGuard
|
管çç»é¢:
moneyglass-admin:3001/parliscope-admin:3004
ã¢ãŒããã¯ãã£
ãã©ãŠã¶ / AIãšãŒãžã§ã³ã / MCP
â
âââââ Portal :3008 âââââ
ââââââââââ¬ââââââââ¬ââââââââ¬ââââŽââââ¬âââââŽâââââ¬âââââââââââ¬âââââââââââ
⌠⌠⌠⌠⌠⌠⌠â
BroadListening MoneyGlass PolicyDiff ParliScope SeatMap CultureScope SocialGuard
:3009 :3000 :3002 :3003 :3005 :3006 :3007 â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â Next.js 15 Ã React 19 â â
ââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââ â
â admin apps
ââââââââââââââââââââââââââââŒââââââââââââââââââââââââââââââââ :3001/:3004
â @ojpp/ui â @ojpp/api â @ojpp/db â @ojpp/ingestion â
ââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââ
â
PostgreSQL (Prisma 6)
29 models â 14 enums â 13æ¿å
ã¯ã€ãã¯ã¹ã¿ãŒã
åå¥èµ·å
pnpm dev:moneyglass # MoneyGlass :3000 + :3001
pnpm dev:policydiff # PolicyDiff :3002
pnpm dev:parliscope # ParliScope :3003 + :3004
pnpm dev:seatmap # SeatMap :3005
pnpm dev:culturescope # CultureScope :3006
pnpm dev:socialguard # SocialGuard :3007
pnpm dev:portal # Portal :3008
pnpm dev:broadlistening # BroadListening :3009
æåã»ããã¢ãã
åææ¡ä»¶: Node.js 22+ / pnpm 10+ / PostgreSQL
git clone https://github.com/ochyai/open-japan-politech-platform.git
cd open-japan-politech-platform
docker compose up -d
cp .env.example .env
pnpm install && pnpm db:generate && pnpm --filter @ojpp/db push && pnpm db:seed
pnpm ingest:all
pnpm dev
ã³ãã³ãäžèЧ
| ã³ãã³ã | 説æ |
|---|---|
pnpm build | ãããã¯ã·ã§ã³ãã«ãïŒå š8ã¢ããªïŒ |
pnpm typecheck | TypeScript åãã§ã㯠|
pnpm test | Vitest ãã¹ãå®è¡ |
pnpm lint | Biome lint |
pnpm db:studio | Prisma StudioïŒDB GUIïŒ |
pnpm db:generate | Prisma Client åçæ |
pnpm ingest:all | å šããŒã¿äžæ¬æå ¥ |
pnpm ingest:culture | æåæ¿çããŒã¿æå ¥ |
pnpm ingest:social | 瀟äŒä¿éããŒã¿æå ¥ |
API
å
šAPIã¯RESTful JSONãè¿ããããŒãžããŒã·ã§ã³ ?page=1&limit=20 ã«å¯Ÿå¿ã
MoneyGlass API :3000
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/organizations | æ¿æ²»å£äœäžèЧ |
| GET | /api/organizations/:id | å£äœè©³çް |
| GET | /api/reports | å ±åæžäžèЧ |
| GET | /api/reports/:id | å ±åæžè©³çŽ°ïŒåæ¯æçŽ°å«ãïŒ |
| GET | /api/parties | æ¿å äžèЧïŒè³ééèšä»ãïŒ |
| GET | /api/stats | ããã·ã¥ããŒãçµ±èš |
PolicyDiff API :3002
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/policies | æ¿çäžèЧ |
| GET | /api/policies/:id | æ¿ç詳现 |
| GET | /api/parties | æ¿å äžèЧ |
| GET | /api/compare | æ¿çæ¯èŒ |
| GET | /api/proposals | ææ¡äžèЧ |
| GET | /api/categories | ã«ããŽãªäžèЧ |
ParliScope API :3003
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/sessions | äŒæäžèЧ |
| GET | /api/sessions/:id | äŒæè©³çŽ° + æ³æ¡ |
| GET | /api/bills | æ³æ¡äžèЧ |
| GET | /api/bills/:id | æ³æ¡è©³çŽ°ïŒæç¥šã»è°è«å«ãïŒ |
| GET | /api/politicians | è°å¡äžèЧ |
| GET | /api/politicians/:id | è°å¡è©³çް + æç¥šå±¥æŽ |
| GET | /api/stats | ããã·ã¥ããŒãçµ±èš |
CultureScope API :3006
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/budgets | æååºäºç®äžèЧ |
| GET | /api/programs | æåããã°ã©ã äžèЧ |
| GET | /api/stances | æ¿å å¥æåæ¿çã¹ã¿ã³ã¹ |
SocialGuard API :3007
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/budgets | 瀟äŒä¿éäºç®äžèЧ |
| GET | /api/programs | 瀟äŒä¿éå¶åºŠäžèЧ |
| GET | /api/welfare-stats | éœéåºçå¥çŠç¥ææš |
| GET | /api/stances | æ¿å å¥ç€ŸäŒä¿éã¹ã¿ã³ã¹ |
BroadListening API :3009
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/topics | ãããã¯äžèЧïŒããŒãžããŒã·ã§ã³å¯Ÿå¿ïŒ |
| GET | /api/topics/:id/ecosystem | çæ ç³»ããŒã¿ïŒæèŠã»ã¯ã©ã¹ã¿ã»ãã§ãã¢ã³ïŒ |
| GET | /api/topics/:id/opinions | æèŠäžèЧ |
| POST | /api/topics/:id/opinions | æèŠæçš¿ |
| POST | /api/topics/:id/analyze | åæãã€ãã©ã€ã³å®è¡ïŒArgument Mining â ã¯ã©ã¹ã¿ãªã³ã° â é©å¿åºŠèšç®ïŒ |
| POST | /api/topics/:id/ai-participate | AIãšãŒãžã§ã³ãåå |
Data Model
Prisma 6 â 29 models, 14 enums
Party ââââ CulturalStance DietSession ââ⺠Bill ââ⺠Vote
â âââ SocialSecurityStance â âââ⺠Discussion
â â
âââ⺠Politician ââ⺠Vote Election ââ⺠ElectionResult
â â
âââ⺠PoliticalOrganization CulturalBudget
â âââ⺠FundReport CulturalProgram
â âââ⺠FundIncome
â âââ⺠FundExpenditure SocialSecurityBudget
â SocialSecurityProgram
âââ⺠Policy ââ⺠PolicyProposal
Prefecture ââ⺠WelfareStat
ããŒã¿ã®æ§è³ªãšä»¶æ°
| ããŒã¿ | æ§è³ª | ä»¶æ° | ãœãŒã¹ |
|---|---|---|---|
| æ¿å ãã¹ã¿ | å®ããŒã¿ | 23æ¿å | ç·åç æ¿å åç°¿ |
| éœéåºç | å®ããŒã¿ | 47 | JIS X 0401 |
| è¡è°é¢è°å¡ | å®ããŒã¿ | 465å | ç·åç 第50åè¡é¢éžçµæ |
| åè°é¢è°å¡ | å®ããŒã¿ | 248å | åè°é¢å ¬åŒ |
| éžæçµæ | å®ããŒã¿ | 9éžæ | ç·åçéžæçµæ |
| åœäŒäŒæ | å®ããŒã¿ | 21äŒæ | è¡è°é¢å ¬åŒ |
| æ³æ¡ | å®ããŒã¿ | 90ä»¶ | è¡è°é¢ã»åè°é¢è°æ¡äžèЧ |
| æ¿æ²»è³é | å®ããŒã¿ | 13æ¿å Ã8幎 | ç·åç æ¿æ²»è³éåæ¯å ±åæž |
| æååºäºç® | å®ããŒã¿ | 12åéÃ8幎 | æååºäºç®æŠèŠ |
| æåããã°ã©ã | å®ããŒã¿ | 20ä»¶ | æååºå ¬éè³æ |
| 瀟äŒä¿éäºç® | å®ããŒã¿ | 8åéÃ8幎 | åçåŽåçã»è²¡åç |
| 瀟äŒä¿éå¶åºŠ | å®ããŒã¿ | 15ä»¶ | åçåŽåç |
| éœéåºçå¥çŠç¥ææš | å®ããŒã¿ | 47Ã3ææš | ç·åççµ±èšå± |
| æ¿å å¥ã¹ã¿ã³ã¹ | ãã¢ããŒã¿ | 13æ¿å Ã12ããã㯠| åå ãããã§ã¹ãåç § |
ããŒã¿ãœãŒã¹
| ããŒã¿ | ãœãŒã¹ | åã蟌㿠|
|---|---|---|
| æ¿æ²»è³é | political-finance-database.com | pnpm ingest:finance |
| åœäŒäŒè°é² | åœäŒäŒè°é²API (CC BY 4.0) | pnpm ingest:parliament |
| æ³æ¡ããŒã¿ | SmartNews SMRI (MIT) | pnpm ingest:parliament |
| ãããã§ã¹ã | åæ¿å å ¬åŒãµã€ã | pnpm ingest:manifesto |
| æåæ¿ç | æååºäºç®æŠèŠã»åå ãããã§ã¹ã | pnpm ingest:culture |
| 瀟äŒä¿é | åçåŽåçã»è²¡åçã»ç·åççµ±èšå± | pnpm ingest:social |
ãšãŒãžã§ã³ããã¡ãŒã¹ãèšèš
| èšèšåå | 詳现 |
|---|---|
| API-First | å šããŒã¿ãRESTful APIã§æäŸããšãŒãžã§ã³ããçŽæ¥ã¢ã¯ã»ã¹ |
| æ©æ¢°å¯èªããŒã¿ | JSONæ§é åããŒã¿ãæšæºã人éçšUIãšãšãŒãžã§ã³ãçšAPIã®äž¡æ¹ |
| ãšãŒãžã§ã³ãèªèšŒ (v0.2) | AIãšãŒãžã§ã³ãçšã®èªèšŒã»æš©é管ç |
| MCPå¯Ÿå¿ (v0.2) | Model Context Protocol ã«ããå€éšAIãšã®é£æº |
| æèã®å ±æ | Entire ã«ãããšãŒãžã§ã³ãã»ãã·ã§ã³ã®æ°žç¶åãã³ããããšçŽä»ããŠããªããã®ã³ãŒããæžããããããå ±æ |
| Attribution | Entire ã«ãã人é/AIè²¢ç®æ¯çã®èªåç®åºã»èšé² |
| ç£æ»ãã° (v0.2) | å šæäœã®ãã¬ãŒãµããªãã£ããšãŒãžã§ã³ãã®è¡åãéæ |
AIãšãŒãžã§ã³ãã§éçºãã
ãã®ãªããžããªã clone ã㊠Claude Code ãèµ·åããã ãã
cd open-japan-politech-platform && claude
open-japan-politech-platform/
âââ apps/ â Next.js 15 ã¢ããª
â âââ moneyglass-web/ :3000 æ¿æ²»è³é
â âââ moneyglass-admin/ :3001 管çç»é¢
â âââ policydiff-web/ :3002 æ¿çæ¯èŒ
â âââ parliscope-web/ :3003 åœäŒ
â âââ parliscope-admin/ :3004 管çç»é¢
â âââ seatmap-web/ :3005 è°åžå¢åå³
â âââ culturescope-web/ :3006 æåæ¿ç
â âââ socialguard-web/ :3007 瀟äŒä¿é
â âââ portal-web/ :3008 ããŒã¿ã« (WebGPUæµäœã·ã§ãŒããŒ)
â âââ broadlistening-web/ :3009 æèŠçæ
系β (Argument Mining + ãã§ãã¢ã³)
âââ packages/
â âââ ui/ @ojpp/ui â 14+ ã³ã³ããŒãã³ã + Motion + Lenis
â âââ db/ @ojpp/db â Prisma (29 models / 14 enums)
â âââ api/ @ojpp/api â ããŒãžããŒã·ã§ã³, ãšã©ãŒ, BigInt倿
â âââ ingestion/ @ojpp/ingestion â 6ããŒã¿ãœãŒã¹åã蟌ã¿
âââ paper/ åŠè¡è«æ
âââ docs/ ããã¥ã¡ã³ã
ã³ãŒãã£ã³ã°èŠçŽ: TypeScript strict / Biome lint / Server Componentsåªå / API-first
æè¡ã¹ã¿ãã¯
| Layer | Tech |
|---|---|
| Frontend | Next.js 15 (App Router) / React 19 / TypeScript 5.9 |
| Database | PostgreSQL via Supabase |
| ORM | Prisma 6 |
| Styling | Tailwind CSS v4 |
| Design System | @ojpp/ui â 14+ ã³ã³ããŒãã³ã / ã«ã¹ã¿ã ããŒã |
| Animation | Motion (v11+) â ã¹ããªã³ã°ç©ç / ã¹ã¯ããŒã«ããªã¬ãŒ / ããŒãžé·ç§» |
| Smooth Scroll | Lenis â æ £æ§ã¹ã¯ããŒã« / 60fps |
| Charts | Recharts |
| Monorepo | pnpm 10 workspaces + Turborepo |
| Lint / Format | Biome 2.3 |
| Test | Vitest 3 |
| AI Session | Entire â ãšãŒãžã§ã³ãæèã®æ°žç¶åã»å ±æ |
| CI/CD | GitHub Actions |
ããŒãããã
- Prismaã¹ããŒã (29ã¢ãã« / 14 enum)
- 8ã¢ã㪠MVP (API + ããã³ããšã³ã)
- ããŒã¿åã蟌ã¿ãã€ãã©ã€ã³ (6ããŒã¿ãœãŒã¹)
- CI/CD ãã€ãã©ã€ã³
- ãã¶ã€ã³ã·ã¹ãã (@ojpp/ui + Motion + Lenis)
- åŠè¡è«æ (PoliTech 5å°åæ¯èŒåæ)
- CultureScope â æåæ¿çå¯èŠå
- SocialGuard â 瀟äŒä¿éå¯èŠå
- ããŒã¿ã«ããã·ã¥ããŒã (WebGPUæµäœã·ã§ãŒã㌠+ ãªã¢ã«ã¿ã€ã KPI)
- BroadListening β â æèŠçæ ç³»ãã©ãããã©ãŒã ïŒArgument Mining + ãã§ãã¢ã³ + k-means++ïŒ
- Vercel ãããã€
- Entire å°å ¥ (AIãšãŒãžã§ã³ãã»ãã·ã§ã³å ±æã»Attribution)
- èªèšŒã»èªå¯ (Supabase Auth)
- AIãšãŒãžã§ã³ãèªèšŒ (APIã㌠/ MCP)
- GraphQL API
- ãªã¢ã«ã¿ã€ã éç¥
- å€èšèªå¯Ÿå¿ (è±èª)
é¢é£ãããžã§ã¯ã
| ãããžã§ã¯ã | é¢ä¿ |
|---|---|
| g0v / vTaiwan | å°æ¹Ÿã¢ãã«ã®æ¥æ¬çãåžæ°ç€ŸäŒäž»å°ã®éå æŽŸã¢ãããŒããèžè¥² |
| Decidim / Consul | 欧å·ã®åå åæ°äž»äž»çŸ©åºç€ãã¢ãžã¥ã©ãŒèšèšãåè |
| mySociety | è±åœã®NGOã¢ãã«ã20幎+ã®æç¶æ§ãåè |
| ããŒã ã¿ãã | æè¡çåèãæ¬ãã©ãããã©ãŒã ã¯å šæ¿å 察å¿ã®éå æŽŸç |
| DD2030 | æ¹åæ§ã¯è¿ããæ¬ãã©ãããã©ãŒã ã¯ãšãŒãžã§ã³ããã¡ãŒã¹ãèšèšã远å |
è«æ
PoliTechïŒæ¿å ã«ãäŒæ¥ã«ããããªãæ¿æ²»ã®ããžã¿ã«åââãªãŒãã³ãœãŒã¹ã»ãšãŒãžã§ã³ãã¬ãã£ãªæ¿æ²»ãã¯ãããžãŒåºç€ã®åœéæ¯èŒåæ
å°æ¹Ÿã»è±åœã»ç±³åœã»æ¬§å·ã»æ¥æ¬ã®5å°åã6軞æ¯èŒãã¬ãŒã ã¯ãŒã¯ã§åæã
UX / ã¢ãã¡ãŒã·ã§ã³
ãã¬ãã¬ãã«ãã³ããã â æ¿æ²»ããŒã¿ããè§Šã£ãŠæ°æã¡ããUIã§å±ãã
å šã¢ããªã« Motion ãš Lenis ã«ããæ»ãããªã¢ãã¡ãŒã·ã§ã³ãå®è£ ã
| æ©èœ | æè¡ | äœéš |
|---|---|---|
| ã¹ã ãŒã¹ã¹ã¯ããŒã« | Lenis æ £æ§ã¹ã¯ããŒã« | å šããŒãžã60fpsã§ã¬ãã¬ã |
| ããŒãžé·ç§» | PageTransition | ãã§ãŒãïŒã¹ã©ã€ãã¢ãã |
| ã¹ã¯ããŒã«ãªããŒã« | useInView + ScrollReveal | ã»ã¯ã·ã§ã³ãã¹ã¯ããŒã«ã§åºçŸ |
| ã«ãŒãã¹ã¿ãã¬ãŒ | StaggerGrid + StaggerItem | ã«ãŒããé çªã«æå·®è¡šç€º |
| ããŒã¿ã㌠| Springç©ç (stiffness:60) | è°åžããŒã»æç¥šããŒãããã§äŒžã³ã |
| ã°ã©ã¹ã¢ãŒãã£ãºã | Scroll-dependent backdrop-blur | ããããŒãåéæã¬ã©ã¹å |
| ãããŒãªãã | whileHover + boxShadow | ã«ãŒããæµ®ãäžãã |
| ã¿ãããã£ãŒããã㯠| whileTap scale(0.97) | ãã¿ã³ãããã§çž®ã |
| ãã©ã©ãã¯ã¹ | useScroll + useTransform | Heroèæ¯ããã©ã©ãã¯ã¹ç§»å |
Contributing
人éãAIãšãŒãžã§ã³ãããªãŒãã³ã«åå ã§ããŸããCONTRIBUTING.md / CODE_OF_CONDUCT.md / SECURITY.md
AIãšãŒãžã§ã³ãããã®Pull Requestãæè¿ããŸããagent/ ã©ãã«ãä»ããŠPRãéã£ãŠãã ããã
AGPL-3.0-or-later â æ¿æ²»ã€ã³ãã©ã¯èª°ã®ãã®ã§ããªããå šå¡ã®ãã®ã§ããã
