[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92778":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},92778,"fintech-app","Elias569\u002Ffintech-app","Elias569","fintech app ","",null,"TypeScript",132,1139,51,0,100,56.17,false,"main",true,[22,23,24,5],"app","fintech","fintech-agent","2026-07-22 04:02:07","## What is fintech?\nFintech Frontend + Backend Prototype is a streamlined, AI-driven platform that connects startups with investors through intelligent matching. It integrates a Vite-based frontend with a FastAPI backend to deliver a fast, modular, and scalable system.\n\nStartups upload pitch decks, investors define their thesis and preferences, and the platform generates high-quality matches on both sides. An embedded AI service produces personalized introduction emails, reducing friction in initial outreach.\n\nThe system follows a clean three-layer architecture, client interface, API layer, and data layer, using an in-memory store for rapid prototyping with clear extensibility toward production-grade databases. Core workflows include deck ingestion, investor onboarding, bidirectional match discovery, and AI-assisted communication, all accessible through well-documented APIs via Swagger.\n\n## Backend setup\n\n```bash\ncd backend\npip install -r requirements.txt\ncp .env.example .env\n# paste your real OPENAI_API_KEY in backend\u002F.env\nuvicorn main:app --reload --port 8000\n```\n\nAPI base URL from frontend: `http:\u002F\u002Flocalhost:8000`\n\n### Key endpoints\n\n- `POST \u002Fstartup\u002Fupload-deck` — upload a startup pitch deck PDF\n- `GET \u002Fstartup\u002F{id}\u002Fmatches` — get investor matches for a startup\n- `POST \u002Finvestor\u002Fregister` — register investor thesis\u002Fpreferences\n- `GET \u002Finvestor\u002F{id}\u002Fdealflow` — get startup dealflow for investor\n- `GET \u002Fintro\u002F{startup_id}\u002F{investor_id}` — generate intro email\n- `GET \u002Fdocs` — interactive Swagger docs\n\n## Frontend setup\n\n```bash\nnpm install\nnpm run dev\n```\n\nOpen Vite local URL (typically `http:\u002F\u002Flocalhost:5173`).\n\n## Redis (optional)\n\nRedis speeds up expensive GPT match scoring on the backend and lets Node tooling share the same cache namespace.\n\n```bash\ndocker compose up -d redis\ncp .env.example .env          # REDIS_URL for Node scripts\ncp backend\u002F.env.example backend\u002F.env   # REDIS_URL + OPENAI_API_KEY for FastAPI\n```\n\n- **Python backend** — uses `redis` (see `backend\u002Fredis\u002F`); caches `GET \u002Fstartup\u002F{id}\u002Fmatches` for 5 minutes when `REDIS_URL` is set.\n- **Node (`ioredis`)** — `server\u002Fredis\u002F` helpers for scripts and tooling; same `fintech-et:` key prefix. Import only from Node, not from React components.\n\nWhen `REDIS_URL` is unset, the API and helpers fall back to uncached behaviour.\n\n### Auth flow notes\n\n- Frontend auth is currently local\u002Fdemo mode (no backend auth API).\n- Use any non-empty `name`, `email`, and `password` to continue.\n- Role selected on sign-in decides dashboard route:\n  - `startup` → startup dashboard\n  - `investor` → investor dashboard\n- Session is persisted in localStorage; use the `Logout` button to clear it.\n\n## Auth + role dashboards (frontend)\n\n- Users first land on a simple auth screen and choose role (`startup` or `investor`).\n- Startup users are routed to startup dashboard flow.\n- Investor users are routed to investor dashboard flow.\n\n## 3-minute API demo (copy\u002Fpaste)\n\nAfter backend is running on `http:\u002F\u002Flocalhost:8000`, run the following in a new terminal.\n\n### 1) Register an investor\n\n```bash\ncurl -s -X POST http:\u002F\u002Flocalhost:8000\u002Finvestor\u002Fregister \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"partner_name\":\"Priya Mehta\",\n    \"firm_name\":\"Nexus Venture Partners\",\n    \"thesis\":\"We back fintech infrastructure startups in India.\",\n    \"sectors\":\"Fintech, SaaS\",\n    \"stages\":\"Seed, Series A\"\n  }'\n```\n\nCopy the `investor_id` from response.\n\n### 2) Upload startup deck\n\n```bash\ncurl -s -X POST http:\u002F\u002Flocalhost:8000\u002Fstartup\u002Fupload-deck \\\n  -F \"file=@\u002Fabsolute\u002Fpath\u002Fto\u002Fpitch-deck.pdf\"\n```\n\nCopy the `startup_id` from response.\n\n### 3) Get startup -> investor matches\n\n```bash\ncurl -s \"http:\u002F\u002Flocalhost:8000\u002Fstartup\u002F\u003Cstartup_id>\u002Fmatches\"\n```\n\n### 4) Get investor dealflow\n\n```bash\ncurl -s \"http:\u002F\u002Flocalhost:8000\u002Finvestor\u002F\u003Cinvestor_id>\u002Fdealflow\"\n```\n\n### 5) Generate intro email draft\n\n```bash\ncurl -s \"http:\u002F\u002Flocalhost:8000\u002Fintro\u002F\u003Cstartup_id>\u002F\u003Cinvestor_id>\"\n```\n\n### 6) (Optional) Case #6 demo endpoints\n\n```bash\ncurl -s \"http:\u002F\u002Flocalhost:8000\u002Findia-investor\u002Fopportunity-radar\"\ncurl -s \"http:\u002F\u002Flocalhost:8000\u002Findia-investor\u002Fchart-patterns\u002FRELIANCE\"\ncurl -s -X POST \"http:\u002F\u002Flocalhost:8000\u002Findia-investor\u002Fmarket-chat\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"question\":\"Any near-term breakout opportunities?\",\"portfolio\":[\"INFY\",\"HDFCBANK\"]}'\n```\n","这是一款面向金融科技领域的初创企业与投资人智能匹配平台原型，提供前后端一体化的AI驱动解决方案。核心功能包括：初创公司上传融资路演PDF、投资人配置投资偏好、双向智能匹配推荐，以及基于大模型生成个性化介绍邮件。技术上采用Vite+TypeScript前端与FastAPI后端，支持Redis缓存加速匹配计算，并内置Swagger API文档。系统采用三层架构设计，当前使用内存存储便于快速验证，具备向生产级数据库扩展的能力。适用于早期融资对接场景下的MVP开发、金融科技课程教学或投资人关系管理工具原型构建。",2,"2026-07-10 02:30:27","CREATED_QUERY"]