Back to all projects

AcademicDecember 9, 2024

LinkinPurry Networking Platform

A full-stack LinkinPurry networking platform with a React single-page app, Express API, and PostgreSQL database.

  • API
  • Web interface
  • Software Architecture
  • Software Engineering
  • Web Development
  • React
  • Vite
  • Tailwind CSS
  • TypeScript
  • PostgreSQL
  • Express
  • Prisma

Overview

LinkInPurry is a professional networking web application built around profiles, a feed, and connections between users. Its pages cover account registration and login, profiles, a people directory with connection invitations, a network view, and messaging. The project also includes connection recommendations and notifications.

Full-stack architecture

The frontend is a React single-page application built with Vite, TypeScript, and Tailwind CSS. An Express API serves the application, and Prisma models the relational data in PostgreSQL. The database schema represents users, feed posts, connection requests, accepted connections, chat messages, and push-notification subscriptions.

React single-page app
          |
          v
Express routes -> controllers and services
          |
          v
Prisma client -> PostgreSQL
          |
          +---- Socket.IO for live chat events

Chat uses Socket.IO over WebSockets in addition to the API routes. The server authenticates socket connections, checks that two users are connected before relaying chat events, and stores messages through its chat service.

router.get('/chat/:to_id', AuthMiddleware.isAuthenticated, (req, res) => {
  log(req)
  chatController.getChatHistory(req, res)
})

Learning goals

Separating the browser application from the API made the boundary between interface state and persisted application data explicit. The project provided experience with typed frontend development, relational modeling, authenticated API routes, and real-time interaction through a persistent connection.