Skip to content

Azharrabbani/BPSFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ BPSFlow - Task Management System

Laravel React Inertia.js TailwindCSS


🧭 Description

BPSFlow is a web-based, real-time task management and collaboration application designed to assist employees of the Badan Pusat Statistik (BPS) in efficiently managing projects, spaces, and team workflows.

This application is built on top of the Laravel framework (providing robust backend REST endpoints and Inertia integration) and React (for a smooth Single Page Application frontend experience).


πŸ§ͺ Key Features

  • Multi-Workspace System: Users can create, switch, edit, and delete workspaces.
  • Workspace Member Management: Owners can invite members by email (role-based: admin, member) and modify roles.
  • Spaces (Channels): Create public or private spaces (channels) within a workspace. Private spaces allow fine-grained user permissions.
  • Project & Task Boards: Define projects inside spaces, and build tasks inside projects.
  • Detailed Assignments: Assign tasks to space members, track status, priorities (low, medium, high), and due dates. Includes automatic email notifications on assignment changes.
  • File Attachment Manager: Upload files to assignments, download, and delete attachments. Auto-notifies owners/admins via email when new files are attached.
  • Interactive Gantt Charts: Track project timelines and schedules.
  • OAuth Google Integration: Quick sign-in using Google accounts.

🧰 Technology Stack

Technology Role / Description
Laravel Backend MVC framework / Inertia.js SSR
React SPA Frontend framework
Inertia.js Monolithic bridge connecting Laravel and React without building a separate API
Tailwind CSS Styling utility framework
Socialite Social authentication (Google OAuth)
MySQL / Postgres Relational Database
Vite Frontend build tool
Mailables SMTP-based transactional email notifications (Workspace/Assignment updates)

πŸš€ Installation & Setup

Follow these steps to run BPSFlow locally:

1. Clone Repository

git clone https://github.com/username/bpsflow.git
cd bpsflow

2. Install Dependencies

# Install PHP dependencies
composer install

# Install Javascript packages
npm install

3. Setup Environment Configuration

Copy the template .env file and generate the application key:

cp .env.example .env
php artisan key:generate

Open .env and set up your database connection, SMTP credentials for email notifications, and Google OAuth credentials:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bpsflow
DB_USERNAME=root
DB_PASSWORD=

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password

GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:8000/oauth/google/callback

4. Database Migrations

Create the database and run the migrations:

php artisan migrate

5. Running the Application

Start both the Laravel development server and Vite asset compiler:

# Terminal 1: Laravel Backend
php artisan serve

# Terminal 2: React Frontend
npm run dev

Access the application at http://localhost:8000.


πŸ“– API & Route Documentation

All routes within the system are defined across routes/web.php and routes/auth.php. Routes wrapped with the auth middleware require a valid session.

πŸ”‘ Authentication Routes (routes/auth.php)

Method URI Controller / Action Middleware Description
GET register RegisteredUserController@create guest Show registration form
POST register RegisteredUserController@store guest Register new user
GET login AuthenticatedSessionController@create guest Show login form
POST login AuthenticatedSessionController@store guest Authenticate / Log in
GET forgot-password PasswordResetLinkController@create guest Forgot password page
POST forgot-password PasswordResetLinkController@store guest Send reset link email
GET reset-password/{token} NewPasswordController@create guest Reset password page
POST reset-password NewPasswordController@store guest Save new password
GET verify-email EmailVerificationPromptController auth Show verification prompt
GET verify-email/{id}/{hash} VerifyEmailController auth, signed Confirm email verification
POST email/verification-notification EmailVerificationNotificationController@store auth, throttle Resend verification email
GET confirm-password ConfirmablePasswordController@show auth Confirm password prompt
POST confirm-password ConfirmablePasswordController@store auth Verify password confirmation
PUT password PasswordController@update auth Update user password
POST logout AuthenticatedSessionController@destroy auth Log out user

🌐 Google OAuth Routes (routes/web.php)

Method URI Controller / Action Middleware Description
GET oauth/google OauthController@redirectToProvider None Redirects user to Google OAuth server
GET oauth/google/callback OauthController@handleProviderCallback None Google callback handler; logs/registers user and creates default workspace

πŸ‘€ Profile Management Routes (routes/web.php)

Method URI Controller / Action Middleware Description
GET /profile ProfileController@edit auth Renders user profile edit page
POST /profile ProfileController@update auth Updates user profile (name, email, photo upload)
DELETE /profile ProfileController@destroy auth Deletes user account and associated owned workspaces
  • POST /profile Payload:
    • name (string, required)
    • email (string, required, email)
    • photo (file, optional, image)
    • oldProfile (string, optional, old photo storage path to delete)

πŸ“‚ Workspace Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /workspace WorkspaceController@store auth Creates a workspace, assigns creator as OWNER
GET /workspace/{workspace} WorkspaceController@edit auth Edit workspace form
GET /workspace/{workspace}/workpace WorkspaceController@workspace auth Details of workspace
POST /workspace/{workspace} WorkspaceController@update auth Updates workspace name
POST /workspace/{workspace}/switch WorkspaceController@switchWorkspace auth Switches active workspace for user session
GET /workspace/{workspace}/deleteWorkspace WorkspaceController@deleteConfirmation auth Confirm workspace deletion page
DELETE /workspace/{workspace} WorkspaceController@destroy auth Deletes a workspace and switches active workspace
  • POST /workspace Payload:
    • name (string, required)

πŸ‘₯ Workspace Members Routes (routes/web.php)

Method URI Controller / Action Middleware Description
GET /workspace/{workspace}/members Workspace_membersController@index auth List workspace members
POST /invite Workspace_membersController@invite auth Invites member to workspace & auto-adds to public spaces
POST /role/{member} Workspace_membersController@changeRole auth Updates workspace member status/role
DELETE /workspace/{member}/members Workspace_membersController@deleteMember auth Removes a member from workspace and its spaces
  • POST /invite Payload:
    • email (string, required, email)
    • role (string, required, in: admin, member)
    • workspace (integer, required, exists in workspaces.id)
  • POST /role/{member} Payload:
    • role (string, required)

πŸ’¬ Space Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /space SpaceController@store auth Create new space (public/private)
POST /space/{space} SpaceController@update auth Updates space name, type, and adds users
DELETE /space/{space} SpaceController@destroy auth Deletes a space
  • POST /space Payload:
    • workspace_id (integer, required)
    • name (string, required)
    • status (string, required, in: public, private)
    • members (array of integers, optional, required if status is private)

πŸ”— Space Members Routes (routes/web.php)

Method URI Controller / Action Middleware Description
GET /space_member/{spaceId} Space_MembersController@getSpaceMembers auth Retrieve space members list (JSON)
DELETE /space_member/{space_member} Space_MembersController@deleteMember auth Remove member from space

πŸ—οΈ Project Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /project ProjectController@store auth Create a new project inside a space
GET /project/{space_id} ProjectController@getProjects auth Fetch all projects inside a space (JSON)
POST /project/{project} ProjectController@update auth Updates project details
DELETE /project/{project} ProjectController@destroy auth Deletes a project
  • POST /project Payload:
    • space_id (integer, required)
    • name (string, required)

πŸ“‹ Task Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /task TasksController@store auth Create a new task within a project
GET /task/{project_id}/tasks TasksController@getTasks auth Fetch all tasks for a project
GET /task/{tasks} AssignmentsController@index auth Show assignment detail page for a task
POST /task/{tasks} TasksController@update auth Updates task details
DELETE /task/{tasks} TasksController@destroy auth Deletes a task
  • POST /task Payload:
    • project_id (integer, required)
    • name (string, required)

πŸ“Œ Assignment Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /assignment AssignmentsController@store auth Create a task assignment
POST /assignment/{assignments}/assignment AssignmentsController@renameAssignment auth Renames the assignment
POST /assignment/{assignments}/assignee AssignmentsController@updateAssignee auth Updates assignment member
POST /assignment/{assignments}/status AssignmentsController@updateStatus auth Updates task completion status
POST /assignment/{assignments}/priority AssignmentsController@updatePriority auth Updates task assignment priority
POST /assignment/{assignments}/dueDate AssignmentsController@updateDue auth Updates task assignment deadline
DELETE /assignment/{assignments} AssignmentsController@destroy auth Deletes the assignment
  • POST /assignment Payload:
    • name (string, required)
    • tasks_id (integer, required)
    • space_member_id (integer, nullable)
    • status (string, required)
    • priority (string, nullable)
    • due_date (date, nullable)
  • POST /assignment/{assignments}/assignee Payload:
    • space_member_id (integer, required)
    • workspace (object, required)

πŸ“ File Attachment Routes (routes/web.php)

Method URI Controller / Action Middleware Description
POST /assignment/{assignment}/file FilesController@store auth Upload attachments to assignment
GET /assignment/{assignment}/files FilesController@getFiles auth List attachments for assignment (JSON)
GET /files/{files} FilesController@download auth Download file from storage
DELETE /files/{files} FilesController@destroy auth Remove file attachment from storage and DB
  • POST /assignment/{assignment}/file Payload:
    • file (array of files, required)
    • members (array of workspace members, required for email notifications)
    • workspace (object, required)

About

BPSFlow is a web-based task management system developed to support team collaboration within the Badan Pusat Statistik (BPS).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors