Skip to content

Latest commit

 

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkillUs

SkillUs Logo

Peer-to-peer skill exchange and learning marketplace

React · TypeScript · Node.js · Express · PostgreSQL · Railway

Academic Team Project — developed as part of a Software Technology course project at the University of Patras. This repository preserves the collaborative Git history of the original team project.

Deployment

The project was deployed on Railway during development and can be accessed through the production deployment URL:

Open SkillUs on Railway

Deployment availability depends on the Railway service remaining active.

Overview

SkillUs is a full-stack web application that connects people who want to teach, learn, exchange, or purchase skills. Users can publish skill offers and requests, communicate with each other, arrange sessions, exchange skills without payment, and leave reviews after completed sessions.

The platform is designed around peer-to-peer learning: the same user can act as both a learner and a teacher.

What SkillUs is not

  • A MOOC platform with pre-recorded courses or certifications
  • A freelancing marketplace such as Upwork
  • A content provider — it connects people who have skills with people who want to learn them

Key Features

  • Skill marketplace with search, filters, categories, offers, and requests
  • Skill-for-skill exchange through Swap Available workflows
  • User registration and session-based authentication
  • User profiles with skills, reviews, and session history
  • Create, edit, and delete skill listings
  • Direct messaging between users
  • Session scheduling and rescheduling
  • Online-session support with Jitsi Meet integration
  • Five-star review system for completed sessions
  • In-app notifications for messages and requests
  • Simulated escrow-style payment flow for skill purchases
  • PostgreSQL-backed persistence and seeded demo data

My Contributions — George Aggelis (@aggelinho)

My work on the collaborative project included contributions across both the frontend and backend, including:

  • Implemented end-to-end editing of existing skill listings, including an authenticated backend PATCH endpoint and the corresponding React editing flow.
  • Aligned the TypeScript domain model with the application's real data model, improving consistency across listings, sessions, payments, and messages.
  • Contributed to the migration of the persistence layer from SQLite to PostgreSQL for Railway deployment and resolved PostgreSQL compatibility issues.
  • Worked on application reliability and UX improvements, including profile/avatar behavior, marketplace flows, session handling, and notification-related fixes.
  • Participated as a contributor and peer reviewer, integrating and reviewing changes in a multi-person Git workflow.

The repository retains the original commit history so individual and collaborative contributions remain visible.

Tech Stack

Frontend

  • React 18
  • TypeScript
  • Vite
  • Tailwind CSS
  • Material UI
  • Radix UI
  • React Router
  • Lucide React

Backend

  • Node.js
  • Express 5
  • PostgreSQL
  • pg (node-postgres)
  • express-session
  • bcryptjs

Tooling & Deployment

  • pnpm
  • Railway
  • Figma
  • ClickUp
  • Git / GitHub

Screenshots

Home Marketplace
Home Page Marketplace Page
Sessions Profile
Sessions Page Profile Page
View more screenshots

Login

Login Screen

Skill Offer

View Skill Offer

Skill Request

View Skill Request

Post New Skill

Post New Skill

Request New Skill

Request New Skill

Messages

Messages Page

Project Structure

SkillUs/
├── Code/
│   ├── public/                 # Static assets
│   ├── src/
│   │   ├── app/
│   │   │   ├── components/     # React UI components
│   │   │   ├── context/        # Authentication context
│   │   │   ├── pages/          # Application pages
│   │   │   ├── types.ts        # TypeScript domain model
│   │   │   └── mockData.ts     # Static category data
│   │   └── styles/             # Global styles
│   ├── server/
│   │   ├── controllers/        # Business logic
│   │   ├── routes/             # Express API routes
│   │   ├── db/
│   │   │   ├── schema.sql      # PostgreSQL schema
│   │   │   ├── seed.ts         # Demo data
│   │   │   └── database.ts     # Database connection & migrations
│   │   ├── middleware/         # Express middleware
│   │   ├── services/           # External-service integration
│   │   └── index.ts            # Backend entry point
│   ├── .env.example
│   ├── package.json
│   ├── pnpm-lock.yaml
│   └── vite.config.ts
├── docs/                       # Documentation and screenshots
├── demo_accounts.md            # Demo user accounts
└── README.md

Running Locally

Prerequisites

  • Node.js
  • pnpm
  • PostgreSQL

1. Install dependencies

cd Code
pnpm install

2. Configure the environment

cp .env.example .env

On Windows PowerShell:

Copy-Item .env.example .env

Create a PostgreSQL database and update .env with your connection details:

DATABASE_URL=postgresql://postgres:password@localhost:5432/skillus
SESSION_SECRET=replace-with-a-long-random-secret
PORT=4000
NODE_ENV=development

The backend initializes the schema and demo data when it connects to the database.

3. Start the backend

pnpm server:dev

The API runs on http://localhost:4000 by default.

4. Start the frontend

Open a second terminal in Code/ and run:

pnpm dev

Vite proxies /api requests to the backend on port 4000 during development.

Demo Accounts

Sample accounts for local testing are available in demo_accounts.md.

The credentials are demo-only seeded accounts and must not be reused for real services.

Team

Team Member Role
Αγγελής Γιώργος Contributor, Peer Reviewer
Αγγελόπουλος Μιχάλης Contributor, Peer Reviewer
Γιαννακόπουλος Σωτήρης Contributor, Peer Reviewer
Πετρόπουλος Γιώργος Contributor, Peer Reviewer
Φουσέκης Πέτρος Editor, Contributor

Project History

This portfolio repository was created from the original collaborative repository while preserving its commit history and attribution.

Original team repository: https://github.com/petrosfs/ProjectSoftwareTechnology

Academic Context

SkillUs was created as a university team project to practice software requirements, system modelling, collaborative development, full-stack implementation, database integration, testing, and iterative delivery.

About

Full-stack peer-to-peer skill exchange marketplace built with React, TypeScript, Node.js, Express and PostgreSQL.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages