Skip to content

Latest commit

 

History

History
267 lines (212 loc) · 4.6 KB

File metadata and controls

267 lines (212 loc) · 4.6 KB

İş Takip - Comprehensive SaaS Platform

Multi-tenant SaaS platform for employee, shift, attendance, and appointment management.

🚀 Features

Backend (Laravel 12)

  • ✅ Multi-tenant architecture (Stancl/Tenancy)
  • ✅ JWT Authentication (tymon/jwt-auth)
  • ✅ Role-Based Access Control (Spatie Permission)
  • ✅ RESTful API with full CRUD operations
  • ✅ QR Code generation (SimpleSoftware QR Code)
  • ✅ Excel export (Maatwebsite Excel)
  • ✅ Image handling (Intervention Image)

Frontend (React + TypeScript)

  • ✅ Modern UI with TailwindCSS
  • ✅ Protected routes with authentication
  • ✅ Dashboard with real-time statistics
  • ✅ Employee management (CRUD)
  • ✅ Appointment management with status tracking
  • ✅ Service management
  • ✅ Customer management
  • ✅ Attendance tracking

Mobile (React Native + Expo)

  • ✅ Native iOS & Android support
  • ✅ JWT Authentication
  • ✅ Dashboard with statistics
  • ✅ QR Code scanner for check-in/check-out
  • ✅ Attendance history
  • ✅ Shift schedule view

📋 Installation

Prerequisites

  • PHP 8.3+
  • Composer
  • Node.js 18+
  • npm or yarn

Backend Setup

cd backend

# Install dependencies
composer install

# Setup environment
cp .env.example .env
php artisan key:generate
php artisan jwt:secret

# Run migrations
php artisan migrate:fresh

# Seed demo data
php artisan db:seed --class=DemoDataSeeder

# Start development server
php artisan serve

Frontend Setup

cd frontend

# Install dependencies
npm install

# Start development server
npm start

Mobile Setup

cd mobile

# Install dependencies
npm install

# Start Expo development server
npm start

# Run on iOS
npm run ios

# Run on Android
npm run android

🔑 Demo Accounts

Admin:

  • Email: admin@istakip.com
  • Password: password

Employees:

  • mehmet@istakip.com / password
  • ayse@istakip.com / password
  • ali@istakip.com / password
  • zeynep@istakip.com / password

📡 API Endpoints

Authentication

POST /api/auth/register
POST /api/auth/login
GET  /api/auth/me
POST /api/auth/logout
POST /api/auth/refresh

Dashboard

GET /api/dashboard/stats
GET /api/dashboard/today-appointments
GET /api/dashboard/today-attendances

Employees

GET    /api/employees
POST   /api/employees
GET    /api/employees/{id}
PUT    /api/employees/{id}
DELETE /api/employees/{id}

Attendances

POST /api/attendances/check-in
POST /api/attendances/check-out
GET  /api/attendances

Appointments

GET   /api/appointments
GET   /api/appointments/today
GET   /api/appointments/upcoming
POST  /api/appointments
PATCH /api/appointments/{id}/status

Services

GET    /api/services
POST   /api/services
PUT    /api/services/{id}
DELETE /api/services/{id}

Customers

GET    /api/customers
POST   /api/customers
PUT    /api/customers/{id}
DELETE /api/customers/{id}

🏗️ Architecture

Database Schema

  • tenants - Multi-tenant management
  • users - User authentication
  • employees - Employee information
  • departments - Department organization
  • locations - Physical locations
  • shifts - Work shifts
  • shift_templates - Reusable shift patterns
  • attendances - Check-in/check-out records
  • appointments - Customer appointments
  • services - Service offerings
  • customers - Customer information

Technology Stack

Backend:

  • Laravel 12
  • PHP 8.3
  • SQLite (development)
  • JWT Authentication
  • Stancl Tenancy
  • Spatie Permission

Frontend:

  • React 18.3
  • TypeScript 5.3
  • TailwindCSS
  • React Router v7
  • Axios
  • date-fns

Mobile:

  • React Native 0.76
  • Expo 52
  • TypeScript
  • Expo Camera (QR scanning)
  • AsyncStorage

🐳 Docker Support

# Start all services
docker-compose up -d

# Stop services
docker-compose down

Services:

  • nginx - Web server (port 80)
  • php - PHP-FPM 8.3
  • mysql - Database (port 3306)
  • redis - Cache & sessions (port 6379)

📝 Development Notes

QR Code Format

For check-in:

{
  "action": "check_in",
  "employee_id": 1,
  "shift_id": 1
}

For check-out:

{
  "action": "check_out",
  "employee_id": 1
}

Status Values

Attendance Status:

  • present - Present
  • absent - Absent
  • late - Late
  • half_day - Half day
  • sick_leave - Sick leave
  • vacation - Vacation

Appointment Status:

  • waiting - Waiting
  • confirmed - Confirmed
  • arrived - Arrived
  • in_progress - In Progress
  • completed - Completed
  • cancelled - Cancelled
  • no_show - No Show

📄 License

This project is proprietary software.

👥 Contributors

Developed by [Your Team Name]