CompanyPulse - Internal tool for company relations
fullstack

CompanyPulse - Internal tool for company relations

Internal tool for company relations for Epitech Marseille.

10 March 2026

CompanyPulse — Internal Tool for Company Relations and Management

Context

CompanyPulse is an internal tool designed to manage relationships between Epitech Marseille and partner companies.

This web application was developed following a challenge from my campus director: build a fully functional solution within 2 weeks.

Objectives

The main objective was to centralize company data by registering companies with detailed information, in order to provide a single platform to track and manage relationships.

Challenges

  • Time constraint (2 weeks)
  • Managing both frontend and backend
  • Setting up CI/CD quickly

Features

  • Authentication via Epitech account (Microsoft authentication)
  • Register companies with detailed information (name, address, phone, email, website, social media, etc.)
  • Manage contacts linked to companies
  • Create tasks (team or personal) with dashboard reminders
  • Track all communications with companies (meetings, calls, etc.)
  • Log company interactions during events (career fairs, presentations, etc.)
  • Manage partnerships with status and expiration tracking
  • Add custom tags for companies and contacts
  • Blacklist companies with specific reasons
  • Admin panel to invite users (whitelist system for secure access)

Tech Stack

  • Laravel 12 — Backend framework
  • Pest — Testing framework
  • React 19 — Frontend library
  • Tailwind CSS — CSS framework
  • Shadcn UI — UI component library
  • MySQL 8.0 — Database
  • GitHub — Source code hosting
  • Docker — Containerization
  • Docker Registry — Image storage

Architecture

I used Inertia.js to improve developer experience and avoid building a separate REST API between frontend and backend.

The backend follows a simple Hexagonal Architecture.

The frontend uses a standard React structure.

Deployment

Deployment is handled using GitHub CI/CD:

CI

  • Run tests with Pest
  • Build a single Docker image (frontend + backend)
  • Push the image to a Docker registry
  • Use artifacts for caching to optimize build time and resources

CD

  • Pull the latest image on a VPS
  • Restart containers

I also developed a Bash script to back up the database into a compressed .gz file, automatically executed via a cron job.

What I Learned

  • Improved my skills in Laravel and React
  • Learned how to use Docker and GitHub CI/CD in a real-world project
  • Discovered and applied Hexagonal Architecture in backend development

Future Improvements

  • Enhance the dashboard with more insights
  • Implement soft deletes to preserve data
  • Extend admin features (user management, roles, permissions)