Releases: vimalyad/studi.io
v1.3.0 - Interactive Resource Hub
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 nestedresourceHubandresourcessubdocuments within theStudyRoommodel. - 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
deleteResourcelogic to correctly use Mongoose's.pull()method for subdocument removal, fixing a critical logical error.
- Created a full set of RESTful API endpoints and controllers (
-
Frontend
ResourceHubPanel.tsxComponent:- Built a new tab panel for the
Resource Hubthat displays sections and their resources using the DaisyUIcollapse(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
ResourceModalfor 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.
- Built a new tab panel for the
-
Redux & State Management:
- Updated the
roomSlicewith a newsetRoomDatareducer to accept a complete room object, enabling seamless optimistic updates for the Resource Hub. - The
HomePagenow passes the correctcanEditpermissions down to theResourceHubPanel.
- Updated the
v1.2.0 - Real-Time Whiteboard Feature
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
drawingevent on path creation, which the backend relays to all other room members (socket.to(roomId).emit). - Frontend listens for incoming
drawingevents and renders the received paths on the canvas.
- Added backend Socket.IO handlers (
-
Persistence (Backend & Frontend):
- The frontend periodically emits the full canvas state (as JSON) via the
save-whiteboard-stateevent. - The backend saves this JSON string to the
whiteboardStatefield in theStudyRoomMongoDB document. - When a user joins a room, the backend's
join-roomhandler now emitsload-whiteboard-statewith the saved JSON, instantly loading the persisted drawing for the new user.
- The frontend periodically emits the full canvas state (as JSON) via the
🛠️ Fixes & Refinements
- Fixed various TypeScript errors related to Fabric.js types, including
IEvent(changed tofabric.Event),setBackgroundColor(changed tobackgroundColor), and handling potentially undefinedfreeDrawingBrushobjects. - Corrected the Fabric.js import statement (
import { fabric } from 'fabric') to resolve module export errors. - The
Whiteboard.tsxcomponent now correctly resizes with the window.
Full Changelog: v1.0.0...v1.2.0
v1.0.0 - Initial Release
🎉 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