Transform file sharing in education.
A course platform where teachers create courses & assignments and students submit their work - all in one place. πΌπ
This is an academic project, built for the Modern Web Applications course (WspΓ³Εczesne aplikacje webowe, 2023/2024). It was developed by a four-person team split into a front-end and a back-end squad, using Git & GitHub for version control and collaboration.
TaskShare is a system for easily sharing files, projects, and tasks within selected courses. Teachers can create dedicated courses that students can request to join; once approved, students can submit files as solutions to the assignments inside that course.
This repository contains the front-end of the application. The back-end (ASP.NET Core + MariaDB) lives in a separate repository.
- π₯οΈ Front-end: https://github.com/kacaleksandra/taskshare
- βοΈ Back-end: https://github.com/Avenek/taskshare_api
TaskShare ships with a full registration & login flow and a role-based experience split between teachers and students.
- β Create, edit, and delete courses
- β Create, edit, and delete assignments within a course
- β Manage course participants - accept or remove students
- β Review and download the solutions submitted by students
- β Search & browse all courses on the platform
- β Request to join a course (subject to teacher approval)
- β Track your pending and enrolled repositories
- β Submit and edit files for assignments
π New teacher accounts start in a waiting-for-approval state β teacher privileges are unlocked once the account is confirmed.
Landing page![]() |
Sign up![]() |
Sign in![]() |
Teacher β waiting for approval![]() |
π§βπ« More teacher screens (click to expand)
Create a new course![]() |
Managed courses![]() |
Edit course![]() |
Delete course confirmation![]() |
Manage members![]() |
Create assignment![]() |
Course assignments![]() |
π More student screens (click to expand)
All courses + search![]() |
My repositories![]() |
Assignments![]() |
Edit a submission![]() |
| Technology | Why we used it |
|---|---|
| Next.js 14 | Core framework β SSR, dynamic routing & the App Router for fast, well-organized pages |
| React 18 + TypeScript | Component-driven UI with end-to-end type safety |
| Tailwind CSS | Utility-first styling for a consistent, easily tweakable look |
| shadcn/ui (Radix UI) | Accessible, customizable UI primitives (dialogs, forms, toastsβ¦) |
| Zustand | Lightweight global state management |
| TanStack Query | Server-state fetching, caching & synchronization |
| React Hook Form + Zod | Performant forms with schema-based validation |
| date-fns | Date formatting, parsing & comparison |
| Lucide + Font Awesome | Crisp, scalable SVG icons |
| react-lottie-player | Lottie (JSON) animations for a livelier UI |
| next-client-cookies, clsx, tailwind-merge | Cookie/session handling & dynamic class composition |
Code quality is enforced with ESLint, Prettier (with import sorting) and Husky git hooks.
Back-end (separate repo)
Written in ASP.NET Core (C#) with a MariaDB database, hosted locally via Docker. It uses Entity Framework (ORM), JWT Bearer authentication, FluentValidation, AutoMapper, and Swagger for API exploration, and follows the Repository / Unit of Work pattern with resource-based authorization.
taskshare/
βββ app/ # Next.js App Router
β βββ (auth)/ # sign-in, sign-up, success
β βββ (teacher)/ # teacher-only zone
β β βββ teacher-dashboard/
β β βββ teacher-courses/
β β βββ manage-members/
β β βββ submitted-works/
β β βββ waiting-for-approval/
β βββ course/ # create / edit / view a course
β βββ assignment/ # create / edit / submit / view assignments
β βββ dashboard/ # student dashboard
β βββ mycourses/ # pending & enrolled repositories
β βββ _components/ # shared components
β βββ _utils/ # shared helpers
βββ ui/ # shadcn/ui + Lottie assets
βββ public/ # static assets (logo, hero imageβ¦)
βββ constants.ts # role ids & pagination sizes
βββ middleware.ts # auth / route protection
The back-end database models courses and submissions around users and roles. Key entities include:
| Entity | Purpose |
|---|---|
users, roles, approval_statuses |
Accounts, roles (Admin / Teacher / Student) and confirmation status |
courses |
Courses owned by teachers |
course_enrolled_users / course_pending_users |
Many-to-many enrollment (approved vs. awaiting approval) |
assignments |
Tasks within a course (deadline, visibility, description) |
submissions / submission_files |
Student submissions and their uploaded files |
user_actions / user_logs |
Audit log of user actions |
black_listed_token |
Revoked JWT tokens |
- Node.js (18+) and npm
- A running instance of the TaskShare API
# 1. Install dependencies
npm install
# 2. Create a .env file and point it at your API
echo "NEXT_PUBLIC_API_URL=http://localhost:<api-port>" > .env
# 3. Start the dev server
npm run devThe app will be available at http://localhost:3000.
| Command | What it does |
|---|---|
npm run dev |
Start the development server |
npm run build |
Create a production build |
npm run start |
Serve the production build |
npm run lint |
Run ESLint |
npm run format |
Format the codebase with Prettier |
βΉοΈ To run the back-end, build the Docker image from its
Dockerfile, bring the stack up withdocker compose up, import the database schema, then restart the containers. See the API repository for full instructions.
| Name | Role |
|---|---|
| Aleksandra Kacprzak | Front-end developer |
| RafaΕ MacioΕczyk | Front-end developer |
| Jakub Machnik | Back-end developer |
| Piotr Karolak | Back-end developer |
Built with β€οΈ as a university project Β· 2023/2024














