← PROJECTS CEBAN MARIUS / PROJECTS / UNISHARE
05 — Full Stack Development

UniShare.

A university collaboration platform — virtual classrooms with invite codes, dual-type post system (free materials vs. paid tutoring), role-based access control, and a subscription layer with mock payment flow. Built with Laravel, React, and Inertia.js.

Role
Full Stack Developer
Year
2025
Stack
Laravel · React · TypeScript · Inertia.js · Tailwind CSS · SQLite
Status
Portfolio Project ↗
Live Site
UniShare hero
UniShare subsection
UniShare footer

UniShare is an academic resource-sharing and collaboration platform for university students. Its tagline — "Connetti, Collabora, Riuscisci" (Connect, Collaborate, Succeed) — captures the core loop: students join virtual classrooms via a 6-character invite code, then share study materials for free or find paid tutoring sessions posted by classroom admins.

The platform distinguishes between two user roles. Regular students can upload notes, PDFs, and files (up to 10MB) as free "Materiale Condiviso" posts. Classroom admins (teachers or tutors) can additionally post "Annunci a Pagamento" — priced announcements for paid sessions or premium materials. All posts are searchable by title/content and sortable by date or price.

· · · ◆ · · ·

Students typically rely on fragmented channels — WhatsApp groups, shared Google Drive folders, Telegram threads — to exchange materials. These scatter resources across multiple platforms with no structure, no search, and no authority system to distinguish reliable sources from noise.

UniShare centralizes this in one authenticated space. The invite-code classroom model mirrors how university courses actually work — a professor creates the room, students join, and materials flow in both directions. The subscription layer adds a monetization dimension, simulating how a real platform would sustain itself.

Classroom System

Admins create virtual classrooms with a name and description. On creation, a unique 6-character alphanumeric join code is auto-generated. Users join by entering this code from the dashboard. Each classroom has its own post feed. Admins can edit or delete classrooms and posts via modal dialogs — non-admins can only view and create free posts.

UniShare lobby
UniShare analisi

Inertia.js Full Stack Bridge

Rather than building a separate REST API, UniShare uses Inertia.js to pass server-rendered Laravel data directly as React component props. This eliminates the need for API routes, fetch calls, and client-side state management for server data — Laravel controllers return Inertia responses that hydrate React pages as if they were standard server-rendered views, but with SPA navigation.

· · · ◆ · · ·

What shipped

Full-stack application with: complete authentication system (login, register, password reset, email verification, profile settings), classroom CRUD with invite-code join flow, dual post type system with file uploads (stored via Laravel's disk abstraction), role-based access control via isAdmin flag, subscription middleware that gates access and redirects expired users to a mock payment page, CV validation loading screen, and a polished React marketing landing page with animated statistics using react-countup and IntersectionObserver scroll triggers.

What I learned

Inertia.js is a genuinely different mental model for full-stack development — it collapses the frontend/backend boundary without sacrificing either side. Laravel handles routing, auth, validation, and data — React handles rendering and interactivity — and Inertia connects them transparently. The result is less boilerplate than a traditional SPA with a separate API, and more reactivity than a classic server-rendered app. For solo projects at this scope, it's the right tool.

UniShare mobile analisi
NEXT PROJECT
Donkey Joe →