The Portfolio Manager provides a robust set of JSON endpoints for external frontends.
| Endpoint | Method | Description |
|---|---|---|
| /api/settings | GET | Website branding, social URLs, and features |
| /api/seo | GET | SEO metadata and auto-generated JSON-LD |
| /api/blog | GET | List all published blog posts |
| /api/projects | GET | List all projects and case studies |
| /api/experience | GET | Career timeline and work history |
| /api/downloads | GET | Software/App download links across platforms |
| /api/sitemap | GET | Dynamic sitemap structure for search engines |
| Endpoint | Method | Description |
|---|---|---|
| /api/contact | POST | Submit contact form messages |
| /api/analytics | POST | Log page views and visitor data |
| /api/blog/<permalink>/update_view | POST | Increment read count for a blog post |
| /api/projects/<permalink>/update_view | POST | Increment view count for a project |
| /api/downloads/<id>/hit | POST | Track a file download click |
| Endpoint | Method | Description |
|---|---|---|
| /api/push/public-key | GET | Retrieve the VAPID public key |
| /api/push/subscribe | POST | Register a service worker subscription |
| /api/health | GET | Basic system health check |
| Endpoint | Method | Description |
|---|---|---|
| /api/notifications/new | GET | Poll for new unread messages |
| /api/notifications/dismiss/<id> | DELETE | Permanently delete a message |
| /api/upload-image | POST | Upload media to ImgBB and get URL |
| /api/push/send | POST | Trigger a push notification to all subscribers |
| /api/export | GET | Export a full encrypted JSON backup |
| /api/restore | POST | Restore database from a backup file |
Clone the repository git clone https://github.com/TharukRenuja/Portfolio-Manager-Engine.git cd Portfolio-Manager-Engine # Install dependencies pip install -r requirements.txt # Run the application python main.py
The system supports full data portability. You can export your entire database from the Danger Zone and restore it during setup or via the API to move between projects instantly.