{"repo":"Dream-World-Coder/opencanvas","free":true,"listed":false,"github":"https://github.com/Dream-World-Coder/opencanvas","clone":"git clone https://github.com/Dream-World-Coder/opencanvas.git","description":"An open platform for collaborative academic research, metadata aggregation, and distraction-free learning to bridge the gap between rigid journals and light forums.","language":"JavaScript","stars":18,"topics":["design","react","tailwindcss","express","mern-stack","mongodb","node"],"license":"GPL-3.0","category":"databases-storage","readme_excerpt":"OpenCanvas Discover OpenCanvas: Find and read high-quality scientific articles, research papers, and compelling stories. Explore our library and expand your knowledge today. --- Discord: https://discord.gg/wkhEh9QRM5 --- Table of Contents - Project Structure - Technology Stack - Architecture Overview - Database Models - User - Post - Collection - Follow - Interaction - Comment - API Reference - Authentication - Users - Posts - Comments - Collections - Feed - Follow - Search - Authentication Flow - Access Control - Engagement Scoring - Environment Variables - Running Locally - Performance Benchmarks - Support - Version - Preview - Disclosure --- Project Structure --- Technology Stack Frontend - React 18 with Vite - React Router v6 - TailwindCSS - shadcn/ui component library - TanStack Query for server state - Axios for HTTP requests - Sonner for toast notifications Backend - Node.js with Express - MongoDB with Mongoose - Passport.js (Google OAuth 2.0 strategy) - JSON Web Tokens for stateless authentication - node-cron for scheduled jobs - Helmet for HTTP security headers - Morgan for request logging --- Architecture Overview The backend is a stateless REST API. Authentication is handled entirely through JWTs - no server-side sessions are used. Passport is only involved in the Google OAuth redirect flow; once a token is issued it is verified on every subsequent request by the authenticateToken middleware. Two middleware functions are composed on protected routes: 1. authenticat","default_branch":null,"files":null,"tree":[],"storefront":"/r/Dream-World-Coder","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Dream-World-Coder/opencanvas/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}