Scholarly is a professional, full-stack application designed to help researchers, students, and lifelong learners organize their academic resources. Effortlessly track research papers, categorize them by domain (e.g., Machine Learning, GATE CS), and manage your study progress with a modern, aesthetic dashboard.
- Resource Management: Add, edit, and delete research papers or study links.
- Dynamic Filtering: Instantly filter your library by category (discovered dynamically from your data).
- Real-time Search: Find any resource by title with a lightning-fast search bar.
- Status Tracking: Visual badges for Pending, In Progress, and Completed items.
- Responsive Design: Premium UI built with Bootstrap 5, fully optimized for mobile and desktop.
- Statistics API: Built-in analytics endpoint to track your library growth.
- Backend: FastAPI (Python 3.11)
- Frontend: Vue.js 3 (Vite)
- Styling: Bootstrap 5 + Bootstrap Icons
- Database: SQLite (Local) / PostgreSQL (Production)
- CI/CD: GitHub Actions
- Deployment: Vercel (Optimized for Monorepos)
.
βββ .github/workflows/ # CI/CD pipeline (Testing & Build)
βββ backend/ # FastAPI source code & Unit tests
βββ frontend/ # Vue.js 3 dashboard (Vite)
βββ vercel.json # Production deployment config
βββ scholarly.db # Local SQLite database
cd backendpython -m venv .venv && source .venv/bin/activatepip install -r requirements.txtuvicorn main:app --reload- API Docs:
http://127.0.0.1:8000/docs
- API Docs:
cd frontendnpm installnpm run dev- Dashboard:
http://localhost:5173
- Dashboard:
| Method | Endpoint | Description |
|---|---|---|
GET |
/resources/ |
List all research resources (paginated). |
POST |
/resources/ |
Create a new research resource. |
PUT |
/resources/{id} |
Update an existing resource details. |
DELETE |
/resources/{id} |
Remove a resource from the library. |
GET |
/stats/ |
[New] Get library stats by category/status. |
This project includes an automated pipeline that runs on every push:
- Backend: Validates all CRUD logic using
pytest. - Frontend: Ensures the production build compiles successfully.
The root vercel.json is pre-configured for a seamless monorepo deployment. When connected to Vercel:
/api/*requests are handled by the FastAPI server.- All other requests serve the static Vue.js frontend.
MIT License. Feel free to use and adapt this for your own research tracking!