Skip to content

A comprehensive ticket management system implemented in three different frontend technologies: React, Vue.js, and Twig/PHP. This project demonstrates consistent design and functionality across multiple frameworks while maintaining identical features and user experience.

Notifications You must be signed in to change notification settings

youneedgreg/ticket-management-multiframework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TicketFlow - Multi-Framework Ticket Management Application

A comprehensive ticket management system implemented in three different frontend technologies: React, Vue.js, and Twig/PHP. This project demonstrates consistent design and functionality across multiple frameworks while maintaining identical features and user experience.

πŸš€ Project Overview

This repository contains three complete implementations of the same ticket management application, each using a different technology stack while maintaining identical features, design, and user experience. All implementations share a common design system defined in the shared-assets/ folder.

πŸ“¦ Implementations

1. React Implementation

Location: /react-app
Port: 5173
Tech Stack: React 18, React Router, Vite
Build Tool: Vite 5.4.2

View React Documentation β†’

Quick Start:

cd react-app
npm install
npm run dev

2. Vue.js Implementation

Location: /vue-app
Port: 5174
Tech Stack: Vue 3, Vue Router, Vite
Build Tool: Vite 5.4.2

View Vue.js Documentation β†’

Quick Start:

cd vue-app
npm install
npm run dev

3. Twig/PHP Implementation

Location: /twig-app
Port: 8000
Tech Stack: PHP 7.4+, Twig 3, Composer
Server: PHP Built-in Server

View Twig/PHP Documentation β†’

Quick Start:

cd twig-app
composer install
cd public
php -S localhost:8000

✨ Features (All Implementations)

All three versions include identical functionality:

  • 🎨 Landing Page with wavy hero background and decorative circles
  • πŸ” Authentication System (Login/Signup) with real-time validation
  • πŸ“Š Dashboard with live statistics (Total, Open, In Progress, Closed tickets)
  • 🎫 Full CRUD Operations (Create, Read, Update, Delete tickets)
  • πŸ” Status Filtering (All, Open, In Progress, Closed)
  • πŸ’Ύ Data Persistence (localStorage for React/Vue, JSON file for Twig/PHP)
  • πŸ”” Toast Notifications for user feedback
  • πŸ›‘οΈ Protected Routes with authentication middleware
  • πŸ“± Fully Responsive Design (mobile, tablet, desktop)
  • 🎯 Centered Layout with max-width 1440px
  • βœ… Form Validation with inline error messages
  • 🎨 Consistent Design System across all implementations

πŸ“ Project Structure

ticket-management-multiframework/
β”œβ”€β”€ shared-assets/           # Shared design system and assets
β”‚   β”œβ”€β”€ svg/
β”‚   β”‚   β”œβ”€β”€ wave-hero.svg
β”‚   β”‚   └── decorative-circle.svg
β”‚   β”œβ”€β”€ styles.css
β”‚   └── README.md
β”œβ”€β”€ react-app/              # React implementation
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ package.json
β”‚   └── README.md
β”œβ”€β”€ vue-app/                # Vue.js implementation
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ package.json
β”‚   └── README.md
β”œβ”€β”€ twig-app/               # Twig/PHP implementation
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ templates/
β”‚   β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ composer.json
β”‚   └── README.md
└── README.md               # This file

🎨 Shared Assets & Design System

The shared-assets/ folder contains the single source of truth for the design system used across all three implementations:

SVG Graphics

  • wave-hero.svg - Wavy background for hero sections
  • decorative-circle.svg - Floating decorative elements

Design Tokens

  • styles.css - CSS variables for colors, spacing, typography, shadows, and animations

Design System Documentation

  • README.md - Comprehensive design system guide

View Shared Assets Documentation β†’

Note: While each app has embedded copies of these assets for self-containment and easier deployment, this folder serves as the design reference and ensures consistency across all implementations.

🎨 Design Consistency

All three implementations feature identical:

Visual Design

  • Same color palette and gradients
  • Identical wavy hero SVG background
  • Matching decorative floating circles
  • Consistent card-based layouts
  • Uniform button styles and hover effects
  • Same shadows and border radius

Status Color Coding

  • 🟒 Open - Green (#10B981)
  • 🟑 In Progress - Amber (#F59E0B)
  • βšͺ Closed - Gray (#6B7280)

Layout & Spacing

  • Max-width: 1440px centered container
  • Consistent spacing scale (8px grid system)
  • Identical responsive breakpoints
  • Same padding and margins

Typography

  • System font stack for optimal performance
  • Identical heading hierarchy
  • 16px base font size across all apps

πŸ” Test Credentials (All Apps)

The applications use simulated authentication. You can use any credentials that meet these requirements:

Requirements

  • Email: Any valid email format (e.g., test@example.com)
  • Password: Minimum 6 characters (e.g., password123)

Example Credentials

Email: admin@ticketflow.com
Password: admin123
Email: test@test.com
Password: test1234
Email: user@example.com
Password: password

πŸ“Š Technical Comparison

Feature React Vue.js Twig/PHP
Rendering Client-side (SPA) Client-side (SPA) Server-side (SSR)
State Management useState/useEffect ref/computed/watch PHP Sessions + JSON
Routing React Router Vue Router Custom PHP Router
Templates JSX Single File Components Twig Templates
Build Tool Vite Vite None (PHP Runtime)
Data Storage localStorage localStorage JSON File
Notifications React Hot Toast Vue Toastification Flash Messages + JS
Form Handling Controlled Components v-model POST Requests
Validation Client-side JS Client-side JS Server-side PHP

πŸ› οΈ Technologies Used

React Implementation

  • React 18.3.1
  • React Router DOM 7.9.4
  • React Hot Toast 2.6.0
  • Vite 5.4.2

Vue.js Implementation

  • Vue 3.4.21
  • Vue Router 4.3.0
  • Vue Toastification 2.0.0-rc.5
  • Vite 5.4.2

Twig/PHP Implementation

  • PHP 7.4+
  • Twig 3.0
  • Composer (Dependency Management)
  • Custom MVC Architecture

Shared

  • Pure CSS (No CSS frameworks)
  • Responsive Design (Mobile-first)
  • SVG Graphics
  • JavaScript for interactivity

πŸš€ Getting Started

Prerequisites

For React & Vue.js:

  • Node.js 16+
  • npm or yarn

For Twig/PHP:

  • PHP 7.4+
  • Composer

Installation

Clone the repository:

git clone <repository-url>
cd ticket-management-multiframework

Then follow the Quick Start instructions for each implementation above.

πŸ“ Detailed Documentation

Each implementation has comprehensive documentation:

βœ… Features Checklist

All three implementations include:

Landing Page

  • Hero section with gradient background
  • Wavy SVG background
  • Floating decorative circles
  • Feature cards with hover effects
  • CTA section
  • Footer with links
  • Fully responsive

Authentication

  • Login form with validation
  • Signup form with password confirmation
  • Email format validation
  • Password length validation (6+ chars)
  • Inline error messages
  • Success/error notifications
  • Session management
  • Redirect after login

Dashboard

  • Welcome message with user email
  • Statistics cards (Total, Open, In Progress, Closed)
  • Quick action cards
  • Navigation to ticket management
  • Logout functionality
  • Real-time stat updates

Ticket Management

  • Create tickets with validation
  • View all tickets in card layout
  • Edit existing tickets
  • Delete tickets with confirmation
  • Filter by status
  • Empty state handling
  • Form validation (title, status required)
  • Status must be: open, in_progress, or closed
  • Optional description and priority fields
  • Data persistence

Design & UX

  • Consistent design across all implementations
  • Max-width 1440px centered layout
  • Responsive on mobile, tablet, desktop
  • Smooth animations and transitions
  • Accessible forms with labels
  • Loading states
  • Error handling

πŸ› Known Limitations

Since these are demonstration projects:

  • Authentication: Simulated (no password hashing)
  • Data Storage: Client-side (localStorage) or JSON files
  • Security: No CSRF protection, basic validation only
  • Scalability: Not designed for production scale
  • API: No backend API (simulated data operations)

For production use, you would need:

  • Real backend API with database
  • Proper authentication (JWT, OAuth, etc.)
  • Password hashing (bcrypt, Argon2)
  • CSRF protection
  • Rate limiting
  • Input sanitization
  • Error logging
  • Testing (unit, integration, e2e)

πŸ“± Browser Support

All implementations support:

  • βœ… Chrome (latest 2 versions)
  • βœ… Firefox (latest 2 versions)
  • βœ… Safari (latest 2 versions)
  • βœ… Edge (latest 2 versions)

🎯 HNG Internship Task

This project was created as part of the HNG Internship Stage 2 Frontend Task, demonstrating:

  • Proficiency in multiple frontend frameworks (React, Vue.js)
  • Server-side rendering with Twig/PHP
  • Consistent design implementation across frameworks
  • Full-stack development capabilities (frontend + basic backend)
  • Responsive design and UX best practices
  • Code organization and documentation

Task Requirements Met

βœ… Multi-framework implementation (React, Vue.js, Twig)
βœ… Identical layout and design across all versions
βœ… Wavy hero background (SVG)
βœ… Decorative circles
βœ… Max-width 1440px centered layout
βœ… Landing page with CTA
βœ… Authentication (Login/Signup)
βœ… Dashboard with statistics
βœ… Full CRUD ticket management
βœ… Form validation
βœ… Status filtering
βœ… Protected routes
βœ… Responsive design
βœ… Shared assets folder
βœ… Complete documentation

🀝 Contributing

This is a learning project for HNG Internship. Feel free to:

  • Explore the code
  • Learn from the implementations
  • Use as a reference for your own projects

πŸ“ž Support

For questions or issues:

  1. Check individual implementation READMEs
  2. Review the shared-assets documentation
  3. Verify all dependencies are installed
  4. Check browser console for errors

πŸ”— Useful Links

πŸŽ“ Learning Outcomes

This project demonstrates:

Frontend Skills

  • React Hooks and component composition
  • Vue 3 Composition API
  • Twig templating engine
  • Responsive CSS design
  • Client-side routing
  • Form handling and validation
  • State management

Backend Skills (Twig/PHP)

  • MVC architecture
  • PHP sessions
  • Server-side rendering
  • Custom routing
  • File I/O operations
  • Server-side validation

Design Skills

  • Consistent design systems
  • Responsive layouts
  • UI/UX best practices
  • Accessibility considerations
  • Color theory and typography

Development Practices

  • Code organization
  • Documentation
  • Version control (Git)
  • Package management (npm, Composer)
  • Build tools (Vite)

Built with ❀️ for HNG Internship

Showcasing multi-framework development expertise across React, Vue.js, and Twig/PHP

Created by: Gregory Temwa Odete Submission Date: October 25, 2025
Task: HNG Internship Stage 2 - Frontend Development

About

A comprehensive ticket management system implemented in three different frontend technologies: React, Vue.js, and Twig/PHP. This project demonstrates consistent design and functionality across multiple frameworks while maintaining identical features and user experience.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages