Skip to content

Releases: vimalyad/studi.io

v1.3.0 - Interactive Resource Hub

12 Nov 13:35

Choose a tag to compare

This release completes the Resource Hub feature, fulfilling a core part of the Studi.io vision. Users with appropriate permissions (owner or admin) can now add, manage, and delete organized lists of resources (links) within each study room.

✨ New Features

  • Backend API for Subdocuments:

    • Created a full set of RESTful API endpoints and controllers (resourceHub.controller.js) to manage nested resourceHub and resources subdocuments within the StudyRoom model.
    • Implemented controllers for:
      • POST /api/rooms/:id/sections (Add Section)
      • POST /api/rooms/:id/sections/:sectionId/resources (Add Resource)
      • PATCH /api/rooms/:id/sections/:sectionId (Update Section - if built)
      • DELETE /api/rooms/:id/sections/:sectionId (Delete Section)
      • DELETE /api/rooms/:id/sections/:sectionId/resources/:resourceId (Delete Resource)
    • All new endpoints are protected by authentication and perform authorization checks to ensure only owners or admins can make changes.
    • Refactored the deleteResource logic to correctly use Mongoose's .pull() method for subdocument removal, fixing a critical logical error.
  • Frontend ResourceHubPanel.tsx Component:

    • Built a new tab panel for the Resource Hub that displays sections and their resources using the DaisyUI collapse (accordion) component.
    • Implemented optimistic UI updates for adding and deleting sections/resources. The UI updates instantly, and then synchronizes with the backend, providing a fast and responsive user experience.
    • Created an integrated ResourceModal for adding new sections and new resources, all within the same component file.
    • All "Add," "Delete," and "Edit" buttons are conditionally rendered, appearing only for users with owner/admin privileges.
  • Redux & State Management:

    • Updated the roomSlice with a new setRoomData reducer to accept a complete room object, enabling seamless optimistic updates for the Resource Hub.
    • The HomePage now passes the correct canEdit permissions down to the ResourceHubPanel.

v1.2.0 - Real-Time Whiteboard Feature

12 Nov 13:33

Choose a tag to compare

This release introduces the core real-time shared whiteboard, a major new feature for Studi.io. Users in a study room can now draw, collaborate, and share ideas on a persistent digital canvas.

✨ New Features

  • Shared Whiteboard Component (Whiteboard.tsx):

    • Built a responsive frontend whiteboard panel using Fabric.js.
    • Includes a toolbar for selecting Pencil/Select modes, brush color, brush size, and a "Clear All" button.
    • The whiteboard is now a new tab in the main content area of a selected room.
  • Real-Time Sync (Backend & Frontend):

    • Added backend Socket.IO handlers (drawing, save-whiteboard-state, load-whiteboard-state).
    • Frontend emits a drawing event on path creation, which the backend relays to all other room members (socket.to(roomId).emit).
    • Frontend listens for incoming drawing events and renders the received paths on the canvas.
  • Persistence (Backend & Frontend):

    • The frontend periodically emits the full canvas state (as JSON) via the save-whiteboard-state event.
    • The backend saves this JSON string to the whiteboardState field in the StudyRoom MongoDB document.
    • When a user joins a room, the backend's join-room handler now emits load-whiteboard-state with the saved JSON, instantly loading the persisted drawing for the new user.

🛠️ Fixes & Refinements

  • Fixed various TypeScript errors related to Fabric.js types, including IEvent (changed to fabric.Event), setBackgroundColor (changed to backgroundColor), and handling potentially undefined freeDrawingBrush objects.
  • Corrected the Fabric.js import statement (import { fabric } from 'fabric') to resolve module export errors.
  • The Whiteboard.tsx component now correctly resizes with the window.

Full Changelog: v1.0.0...v1.2.0

v1.0.0 - Initial Release

25 Oct 19:02

Choose a tag to compare

🎉 Studi.io v1.0.0 - Initial Release

Features

✨ Real-time collaborative study rooms
💬 Instant messaging with Socket.IO
🔐 Secure JWT authentication
📧 Email verification system
🖼️ Profile and room customization
🔒 Public/private room options
📱 Fully responsive design

Installation

See README.md for setup instructions.

What's Next?

Check out our roadmap for upcoming features!

Full Changelog: https://github.com/yamiSukehiro2907/studi.io/commits/v1.0.0