WorkAboutProcessOpen my CVContact
WorkAboutProcessOpen my CVContact

Case study · 02

StudyBuddy

A Connected Academic Workspace Built Around Each Course

Role
Sole Product Designer & Full-Stack Developer
Year
2026
Platform
Responsive web app (Flutter Web)

The problem

Academic Work Fragmented Across Disconnected Tools

Read the full context

University study workflows are commonly divided across learning systems, personal notes, file links, group chats, calendars, and general-purpose AI tools. Each tool holds only part of the context, forcing students to repeatedly reconstruct which information belongs to which course. This fragmentation makes previous material harder to retrieve, separates discussions and meetings from course content, and obscures what has been completed or needs attention. Generic AI tools also lack access to the student’s selected courses, notes, and resources, reducing the relevance of their output. The product needed to preserve the student’s identity, academic structure, and saved activity across sessions while connecting individual study, collaboration, planning, and AI assistance to the same course context.

The idea

I built the product around a persistent course hub, then connected account identity, academic content, collaboration, planning, and AI assistance to that same context.

  • Product Strategy
  • UI/UX Design
  • Flutter Web
  • Express API
  • PostgreSQL & Prisma
  • Authentication
  • AI Integration
  • Deployment
  1. 01

    Account & Identity

    Email registration, real verification codes, Google sign-in, password recovery, session validation, and protected routes create a complete account lifecycle rather than a visual-only login flow.

  2. 02

    Course Workspace

    Courses connect notes, resources, past assessments, discussions, meetings, events, saved content, and progress. The dashboard aggregates activity while preserving the original course context.

  3. 03

    Course-Aware AI

    The backend retrieves accessible course material and recent conversation context before calling Anthropic. Generated explanations, summaries, quizzes, and practice exams are saved only after user confirmation.

  4. 04

    Inclusive Responsive UX

    The interface supports desktop, tablet, and mobile layouts; Arabic and English; RTL and LTR; light and dark themes; high contrast; adjustable text size; and reusable loading, empty, error, and retry states.

Walkthrough

See the connected academic journey in action.

A complete product walkthrough covering the public experience, account access, the personalized dashboard, course workspaces, learning tools, and responsive interface states.

Design decisions

Three decisions that connected product structure, account reliability, and inclusive interface behavior.

01

Organizing the Product Around the Course Hub

Why?Reduces context switching and gives every action a clear academic context.

The course was chosen as the primary unit of product organization instead of treating every feature as an isolated destination. The relational model connects each course to enrollments, notes, resources, discussions, meetings, events, progress, and AI conversations, while the interface exposes these systems through a unified course hub. This reduces context switching, gives every action a clear academic context, and allows the dashboard to aggregate activity without losing its connection to the original course.

02

Building a Complete Account Lifecycle Instead of a Cosmetic Login

Why?No session before the email is verified: a real account lifecycle, not a login mock.

Registration and account activation were separated so a newly created email account does not receive an authenticated token before verification. Passwords are hashed with bcrypt, email codes are HMAC-hashed rather than stored in plain text, and each code has an expiry, consumed state, and attempt limit. The system also links Google identities to existing users, returns a generic forgot-password response to reduce account disclosure, and protects frontend and API routes independently. This created a complete account lifecycle rather than a local sign-in mock.

03

Treating Responsiveness, Localization, and Display Access as Interface Architecture

Why?Layout, language, direction and display settings are handled centrally, so every screen stays consistent.

Mobile behavior, Arabic support, and display preferences were treated as system-level concerns rather than late visual patches. Central breakpoints control navigation, spacing, cards, dialogs, and typography across device classes, switching between full and compact sidebars and a mobile drawer with bottom navigation. Locale, direction, theme, contrast, text size, and number style are also managed centrally, alongside reusable loading, empty, and error states. This keeps the experience consistent without solving each screen independently.

On mobile

StudyBuddy Across Desktop and Mobile

  • Responsive Dashboard
    Responsive DashboardThe primary dashboard adapted to a compact mobile viewport.
  • Mobile Course Hub
    Mobile Course HubNotes, AI, community, meetings, resources, and progress remain connected on mobile.
  • Display & Accessibility
    Display & AccessibilityLanguage, theme, contrast, and text-size preferences in one settings surface.

How it's built

From the screen to the database.

  1. Flutter WebResponsive bilingual client
  2. Express REST APIAuthenticated application services
  3. Prisma ORMRelational data access
  4. PostgreSQLPersistent academic data

IntegrationsGoogle OAuthEmail DeliveryAnthropic

Engineering evidence

  • Verified email, Google sign-in, password recovery, and protected frontend and API routes.
  • Relational course data persisted through Prisma and PostgreSQL instead of temporary interface state.
  • AI requests are assembled on the backend from authorized course context and confirmed before persistence.
  • Reusable asynchronous states and responsive RTL/LTR layouts cover the complete product journey.

Validation

  • Account creation, email verification, password recovery, Google sign-in, and session-expiry flows were exercised end to end.
  • Responsive behavior was reviewed across desktop, tablet, and mobile in Arabic and English.
  • Production deployment verifies the connected frontend, API, database, and email flow.

Outcome

A Working Academic Product Delivered Across the Full Stack

Read the full context

The delivered result is a deployed web application that supports the student journey from account creation through course management, academic content, collaboration, planning, progress, and AI-assisted study. Its central modules are backed by authenticated APIs and related PostgreSQL records rather than temporary frontend-only state. The project demonstrates a functioning account lifecycle with email verification, Google sign-in, and password recovery, alongside a course-aware AI assistant, shared notes and resources, course communities, meetings, calendar planning, and progress analytics. I independently owned the product from information architecture and UX design through Flutter Web, Express, Prisma, Google and Anthropic integrations, email delivery, responsive and bilingual behavior, display-access settings, deployment, and final system integration.

Constraints

  • Solo graduation project: product design, frontend, backend, data model, and deployment were independently delivered.
  • Email and AI features depend on external services, so failures and expired sessions require explicit recovery states.
  • Formal usability testing with real participants was not claimed; the portfolio reports implemented validation only.