{"id":29551631,"url":"https://github.com/prashant-koi/timeonar","last_synced_at":"2026-04-09T01:31:25.990Z","repository":{"id":303491773,"uuid":"970464696","full_name":"Prashant-koi/Timeonar","owner":"Prashant-koi","description":"See and Learn the history of topics","archived":false,"fork":false,"pushed_at":"2025-07-07T23:07:13.000Z","size":6201,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T15:36:05.909Z","etag":null,"topics":["azure","csharp","dotnet","perplexity-hackathon","vercel","vite"],"latest_commit_sha":null,"homepage":"https://timeonar.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Prashant-koi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-22T04:04:20.000Z","updated_at":"2025-07-07T23:07:16.000Z","dependencies_parsed_at":"2025-07-08T00:55:07.940Z","dependency_job_id":null,"html_url":"https://github.com/Prashant-koi/Timeonar","commit_stats":null,"previous_names":["prashant-koi/timeonar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Prashant-koi/Timeonar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Prashant-koi%2FTimeonar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Prashant-koi%2FTimeonar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Prashant-koi%2FTimeonar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Prashant-koi%2FTimeonar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Prashant-koi","download_url":"https://codeload.github.com/Prashant-koi/Timeonar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Prashant-koi%2FTimeonar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31581864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","csharp","dotnet","perplexity-hackathon","vercel","vite"],"created_at":"2025-07-18T04:38:42.931Z","updated_at":"2026-04-09T01:31:25.970Z","avatar_url":"https://github.com/Prashant-koi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Timeonar: Smart Literature Timeline Explorer\n\n[Click this for web-hosted app](https://timeonar.vercel.app/)\n\n## 🌟 Perplexity Sonar API Integration\n\nTimeonar leverages the power of **Perplexity's Sonar API** to create rich, interactive timelines of scientific research and discoveries across any field of study. Our application demonstrates the capabilities of the Sonar API through multiple integration points:\n\n- **Reasoning-Based Timeline Generation**: I used the `sonar-reasoning` model to analyze and synthesize information about a topic's historical development, generating comprehensive timelines with key discoveries, methodologies, and field evolution patterns.\n\n- **Progressive Enrichment**: Our backend makes sequential API calls to enrich the timeline data in layers, providing users with a dynamic experience as details are populated in real-time:\n  1. Base timeline generation with core details (years, titles, discoveries)\n  2. Methodology and theoretical paradigm enrichment\n  3. Field evolution insights to understand how each discovery influenced subsequent research\n\n- **Academic Source Verification**: We employ custom prompt engineering and JSON extraction techniques to retrieve accurate source information, including original publication venues, DOIs, authors, and citation metrics.\n\n- **Think-Aloud Pattern Parsing**: Custom JSON extraction utilities handle Sonar's reasoning process, capturing concise structured data from detailed API responses which may include explanatory text.\n\n\n### Reason for Sequential API calls\nThe reason for making Sequential API calls was that we were requesting so much data from the Sonar API that it occasionally hallucinated and returned incorrect information. More importantly, it was atrociously slow, taking up to 3 minutes to display all the information. We were stuck on the loading screen for 3 whole minutes. To reduce hallucinations, provide more context, and improve performance, I decided to implement sequential API calls.\n\n\n## ⚙️ Project Overview\n\nTimeonar is an interactive web application that visualizes the timeline of the evolution of scientific knowledge on any topic. It transforms complex research histories into clear, chronological timelines, making it easy to understand how ideas and discoveries have progressed through time.\n\n### Key Features\n\n- **🔍 Topic Discovery**: Search any research topic and watch as Sonar API pulls comprehensive data from thousands of academic sources\n- **⏳ Time Travel**: Jump to specific years to see the state of knowledge during that period\n- **📊 Citation Impact Analysis**: See which papers had the most influence with built-in citation metrics\n- **🧩 Key Insight Extraction**: AI-powered identification of the most important contributions from each discovery\n- **🔄 Progressive Loading**: Real-time timeline construction with streaming updates as data is processed\n- **📱 Responsive Design**: Works seamlessly across desktop, tablet, and mobile devices\n- **📥 PDF Export**: One-click export of complete timelines with source information\n\n### Technological Stack\n\n- **Frontend**: React with TypeScript, Tailwind CSS, built with Vite\n- **Backend**: .NET 8 Web API\n- **API Integration**: Perplexity Sonar API with the sonar-reasoning model\n- **Visualization**: Custom timeline visualization with HTML Canvas\n\n## 📚 Use Cases\n\nTimeonar is designed to serve multiple research-focused audiences:\n\n- **Academic Researchers**: Track the evolution of research in specific fields and identify gaps for new studies\n- **Students \u0026 Educators**: Create visual learning aids for understanding the historical progression of scientific topics\n- **Literature Reviews**: Generate comprehensive literature reviews in a fraction of the time normally required\n- **Corporate R\u0026D**: Stay on top of industry trends and technological developments\n- **Personal Learning**: Explore topics of interest and develop a deeper understanding through chronological context\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Node.js 18+ for frontend\n- .NET 8 SDK for backend\n- Perplexity API key (for Sonar API access)\n\n### Installation\n\n#### Frontend\n\n```bash\n# Frontend\ncd frontend\nnpm install\nnpm run dev\n```\n\n#### Backend\n```bash\ncd backend/Timeonar.Api\ndotnet restore\ndotnet run\n```\n\n---\n\n### Environment Setup\n\nCreate a `.env` file in the backend directory with your Perplexity API key:\n\n```env\nSONARAPI__APIKEY=your_api_key_here\n```\n\n---\n\n### 🌸 How It Works\n\n1. **User searches** for a topic of interest  \n2. **Backend sends a query** to Perplexity’s Sonar API to generate a baseline timeline  \n3. **Timeline enrichment** happens through subsequent API calls for methodology, field evolution, and source information  \n4. **Frontend renders** the timeline with smooth transitions between years  \n5. **Server-sent events** provide real-time updates as the timeline is populated with additional details  \n\n---\n\n### 🗂️ Project Structure\n\n```\nTimeonar/\n├── backend/                 # .NET API backend\n│   └── Timeonar.Api/        # Main API project\n│       ├── Controllers/     # API endpoints\n│       ├── Models/          # Data models\n│       └── Services/        # Core services including Perplexity integration\n├── frontend/                # React frontend\n│   ├── public/              # Static assets\n│   └── src/                 \n│       ├── components/      # Reusable UI components\n│       ├── pages/           # Page components\n│       ├── utils/           # Helper functions\n│       └── types/           # TypeScript type definitions\n```\n\n---\n\n### 🤝 Contributing\n\nContributions, issues, and feature requests are welcome!\n\n---\n\n\n### Acknowledgements\n\n- Perplexity team for creating the powerful Sonar API  \n- The hackathon organizers for the opportunity to build this tool  \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprashant-koi%2Ftimeonar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprashant-koi%2Ftimeonar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprashant-koi%2Ftimeonar/lists"}