Projects

PHiscord

Desktop
System Design
Electron

Discord clone desktop app using Next.js + Electron + Firebase. Made to complete the software laboratory's technical test for the Junior Laboratory Assistant position.

View Source Code

PHiscord Server Chat

PHiscord is a Discord clone built as a desktop app using Next.js and Electron. This desktop app is complete with text, voice, and video communication with server-based communities and direct messaging.

This project was made to complete the technical test when I applied for the full-time role of Junior Laboratory Assistant at BINUS Software Laboratory Center (SLC). As a part-time laboratory assistant, this was one of my first big programming projects and a very valuable learning experience. The case was on the subject of Business Analysis and Application, which included creating the System Design and Architecture before development. I was tested by Shania Priccilia, former Resource Management Officer in BINUS SLC, and achieved a score of 92/100.

Tech Stack: Next.js (React), Electron (via Nextron), Firebase (Auth, Firestore, Storage, Realtime Database), LiveKit (Real-time Voice/Video), TypeScript, Tailwind CSS, Shadcn/UI.


Key Features

Core Communication

Create Server Direct Message Server Call

  • Servers & Channels → Create or join servers (communities). Organize discussions within servers using distinct text and voice channels.
  • Real-time Text Chat → Send and receive messages instantly in text channels and direct messages.
  • Real-time Voice/Video Channels → Join voice channels for persistent group voice chat. Toggle camera for video sharing within the channel. See who’s currently speaking.
  • Direct Messaging → Engage in private one-on-one conversations with friends or other server members (respecting privacy settings).
  • Direct Voice/Video Calls → Initiate private voice or video calls directly with other users.

User Experience & Customization

User Settings Friend System

  • User Authentication → Secure registration and login flow using Firebase Authentication.
  • User Profiles & Presence → Manage your profile information and see the online status of friends. Set custom statuses to share what you’re up to.
  • Friend System → Add, view (by status: Online, All, Blocked), and remove friends. Block users to prevent unwanted interactions.
  • Rich Media & Interactions:
    • Send files (images, documents) via drag-and-drop or file selection.
    • Use emojis in messages.
    • Edit and delete your own messages.
    • Mention users (@username) to notify them.
    • Clickable links and image previews directly in chat.
    • Message search within channels and DMs.
  • Customization:
    • Personalize appearance with color themes and adjustable font sizes.
    • Configure privacy settings for direct messages and calls from non-friends.
    • Set custom nicknames per server.

Server Management

Member Management Create Channel

  • Role-Based Access Control → Servers have Owners, Admins, and Members with distinct permissions for managing the server, channels, and members.
  • Channel Management → Admins/Owners can create, edit, and delete text and voice channels.
  • Member Management → View server members categorized by role. Admins/Owners can manage members on their server.

System Design & Architecture

Use Case Cropped Sequence Cropped Class Diagram Cropped

Here are the outputs of the system design phase that was done before the programming phase.