StudySphere is a modern, responsive student productivity and collaboration platform. Built entirely with Vanilla HTML5, CSS3, and JavaScript (ES6), it has zero dependencies and zero build steps, making it the ideal playground for first-time open-source contributors to practice Git, HTML, CSS, and JS.
- Zero Configuration: No
npm install, no Webpack, no node module headaches. Just clone and openindex.html. - Vanilla Stack: Focus purely on writing clean CSS and JavaScript without learning complex frameworks.
- Welcoming Community: All pull requests (even documentation typos or code comments) are valued and reviewed helper-first.
- Interactive Sandbox: The application features persistence through Local Storage, allowing you to build dynamic features right inside the browser.
We have categorized features by difficulty level. Choose an issue that fits your skill set or create a new proposal!
- Visual Tweaks & Dark Mode Refinement: Enhance the HSL palettes or glassmorphism blur in
css/style.css. - Micro-Animations: Add hover animations on stats cards, note bookmarks, or sidebar links.
- Predefined Avatars: Add more vector or pixel art avatars to the profile selector array in
js/pages.js. - Documentation: Correct typos, improve code comments, or translate the README.
- Markdown Parser: Integrate a lightweight markdown parser (like
marked.jsvia CDN) to render notes nicely instead of using raw text. - Interactive Quiz/Flashcards: Create a study widget that lets students generate multiple-choice quizzes and test themselves.
- Attendance Log: Build a simple dashboard tracker to log weekly class attendance.
- Backup & Export: Add a button on the profile page to export local storage data to a JSON file and import it back.
- Calendar Integration: Implement a full calendar grid view that populates dots on days containing assignment deadlines.
- Offline Support (PWA): Register a Service Worker to turn StudySphere into an installable progressive web app.
- Supabase / Firebase Integration: Bridge
js/db.jsstorage calls to a cloud database for true remote multi-user sync.
To help you find where to make your changes, here is a directory breakdown:
StudyFlow/
βββ index.html # Main SPA frame containing sidebar & header wrapper
βββ css/
β βββ style.css # CSS Variables (themes), global layouts, buttons, forms, & modals
β βββ pages.css # Page-specific styling (Grids, widget items, thread timelines)
βββ js/
β βββ db.js # LocalStorage wrapper, database API, & initial mock data
β βββ ui.js # Route coordinator (hash-based router), toast alerts, & modal states
β βββ pages.js # Main engine injecting HTML view templates and handling UI events
βββ .github/
β βββ ISSUE_TEMPLATE/ # Pre-configured templates for bugs and enhancements
βββ CONTRIBUTING.md # Full workflow guide for clone, branch, commit, and PR processes
βββ CODE_OF_CONDUCT.md # Code of Conduct details
βββ LICENSE # MIT Open Source license
StudySphere is structured as a client-side Single Page Application (SPA). The hash-based router acts as the coordinator:
graph TD
A[Browser HashChange Event] --> B(Router Coordinator - ui.js)
B --> C{Determine Route}
C -->|#dashboard| D[renderDashboard]
C -->|#notes| E[renderNotes]
C -->|#groups| F[renderGroups]
C -->|#assignments| G[renderAssignments]
C -->|#resources| H[renderResources]
C -->|#forum| I[renderForum]
C -->|#profile| J[renderProfile]
D & E & F & G & H & I & J -->|Updates View DOM| K[#page-container]
K --> L[Local Storage Database - db.js]
Setting up your environment takes less than a minute:
- Fork and Clone:
git clone https://github.com/amitpaul2004/StudyFlow.git cd StudyFlow - Run a Local Server (Optional, but recommended for loading icons and avoiding CORS issues):
- Python 3:
Open
python -m http.server 8000
http://localhost:8000in your browser. - NodeJS (
npx):Opennpx http-server -p 8000
http://localhost:8000in your browser. - VS Code Extension: Right-click
index.htmland choose Open with Live Server.
- Python 3:
- Search the Issues tab to find a task or open a new one to discuss your ideas.
- Create a clean branch from
main:git checkout -b feat/your-feature-name
- Implement your changes. Please keep code formatted and write comments where needed.
- Test your changes locally in dark and light modes, and verify responsive states on mobile.
- Commit and push:
git add . git commit -m "feat: add user flashcard quiz widget" git push origin feat/your-feature-name
- Submit a Pull Request explaining what changes were made, how they were tested, and linking the issue.
Thank you to everyone helping make StudySphere a better platform!
Contributions of any size are welcome! Please check CONTRIBUTING.md for more details.