Skip to content

wesbruh/PBMS

Repository files navigation

ContributorsCI/CD Github Actions Deploy & Tests Workflow For PBMS

Your Roots Photography is powered by a custom Photography Business Management System (PBMS).


Logo

Your Roots Photography

Explore the docs »

Table of Contents
  1. About The Project
  2. Background
  3. Screenshots
  4. Entity Relationship Diagram
  5. Built With
  6. Developer Instructions
  7. Testing
  8. Deployment
  9. Contact

About The Project

The Photography Business Management System (PBMS) is a full-stack web platform built for our client, Bailey White of Your Roots Photography. The system streamlines the entire client experience by allowing users to create accounts, submit inquiries to schedule photography sessions, make secure payments, and access their final galleries. On the admin side, the platform provides an intuitive dashboard for viewing relevant business analytics and managing clients, bookings, invoices, contracts, galleries, and notifications all in one place.

This application was created because Bailey had been managing all of the tasks manually as a solo business owner. Booking sessions, sending invoices, delivering galleries, and tracking payments were all handled through separate tools or by hand. Our team recognized the need for a centralized, automated platform that would consolidate these workflows into a single system, reducing administrative overhead and provide a more professional experience for her and her clients.

This project was developed as part of the Senior Capstone sequence (CSC 190/191) at California State University, Sacramento.

(back to top)

Background

Your Roots Photography is a modern photography brand based in Northern California that is dedicated to capturing real, emotional, and artistic imagery. With a focus on lifestyle, wedding, and maternity photography, the business combines a documentary approach with creative editing to produce stunning visuals that clients can treasure for years to come. The brand's mission is to create an effortless client experience, from booking to final gallery delivery. The business emphasizes professionalism, creativity, and strong client relationships.

Our team recognized the need for a centralized, automated platform that would streamline the following processes:

  • Client dashboard - overview of all their photography-related information
  • Booking Requests
  • Admin dashboard:
    • Automated invoice generation
    • Uploadable online gallery delivery
    • Contract and Questionnaire management
    • Notifications and reminders
    • Secure session tracking
    • Business analytics

Screenshots

Landing Page

The home page introduces Your Roots Photography and highlights key services such as weddings, engagements, family portraits, and lifestyle shoots.

PBMS landing page screenshot PBMS landing page screenshot

Login Page

Users can create an account and log in to securely access their personal dashboard and session information.

PBMS login page screenshot

Booking Request (Inquiry Form)

Clients can submit a booking request through the inquiry form by providing their name, contact information, desired session type, preferred date and location, and any special requests. Available dates are dynamically generated based on the photographer's current availability. To submit an inquiry for the first time, an account must be created by the user first.

PBMS inquiry page screenshot PBMS inquiry page screenshot PBMS inquiry page screenshot

Client Dashboard

The Client Dashboard offers users a clean, organized, and personalized overview of all their photography-related information including upcoming sessions, invoices, galleries, and notifications.

PBMS client dashboard screenshot

Admin Dashboard

The Admin Dashboard gives the photographer full control over all business operations. From here, the admin can view business analytics, view and manage pending client bookings, upload photo galleries, view and download invoices or manage payments, and manage pre-session questionnaire and contract templates, all from a single centralized interface.

PBMS admin home page dashboard screenshot PBMS admin home page dashboard screenshot PBMS admin home page dashboard screenshot PBMS admin home page dashboard screenshot

(back to top)

Entity Relationship Diagram

Below is the Entity Relationship Diagram (ERD) that defines the data structure for the Photography Business Management System.

This diagram outlines the relationships between key components such as clients, sessions, invoices, payments, galleries, and questionnaires/contract forms.

PBMS ERD

(back to top)

Built With

Using a modern full-stack architecture:

Vite React Tailwind Supabase Node.js Express.js npm Stripe Resend Hostinger Render GitHub Actions

and collaborative tools such as:

vscode Jira Figma Canva Discord Canvas Zoom

(back to top)

DEVELOPER INSTRUCTIONS

Getting Started

Follow these instructions to get a local copy of the project up and running on your machine. Addtionally, more information can be found in the entirety of the Maintenance Manual, and including Sections 3.5, 3.6 and Section 6: Database.

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/wesbruh/PBMS.git
    cd PBMS
  2. Install frontend dependencies:

    npm ci
  3. Install backend dependencies:

    cd backend
    npm ci

Environment Variables

The application requires environment variables for both the frontend and backend. Create .env files in the appropriate directories using the examples below.

Frontend (root .env):

VITE_API_URL=http://localhost:<backend_port>
VITE_SUPABASE_URL=<your_supabase_project_url>
VITE_SUPABASE_ANON_KEY=<your_supabase_anon_key>

Backend (backend/.env):

PORT=<your_backend_port>
CLIENT_BASE_URL=http://localhost:5173
SUPABASE_URL=<your_supabase_project_url>
SUPABASE_SERVICE_ROLE_KEY=<your_supabase_service_role_key>
STRIPE_API_KEY=<your_stripe_secret_key>
RESEND_API_KEY=<your_resend_api_key>

⚠️ Never commit .env files to GitHub. They contain secrets that should remain local.

Running the Application

  1. From the backend folder in the project root folder, start the server by running:

    npm start
  2. In a separate terminal, (from the project root) start the frontend dev server:

    npm run dev
  3. Open your browser and navigate to http://localhost:5173.

(back to top)

TESTING

To test any new changes made to the application and help prevent regressions, run the local test suite before pushing code changes to the repository. This helps ensure that new changes do not affect existing functionality.

Note: ensure these commands are all also being run from the project root

To run all tests with coverage enabled, use the following command:

npm test -- --coverage

To run a specific test file with coverage enabled, use the following command:

npm test <test_file_name> -- --coverage

For example, to run the existing SessionTypesMainPage.test.js test file located in tests/unit/frontend/AdminPages, use the following command:

npm test SessionTypesMainPage.test.js -- --coverage

Additionally, below are the scripts available to run specific tests:

Command Description
npm run test Runs all tests
npm run test:unit Runs all unit tests in tests/unit
npm run test:frontend Runs all unit tests in tests/frontend
npm run test:backend Runs backend unit tests in tests/backend, including integration tests and e2e tests
npm run edge:test Runs Deno test for edge function transactional emails

(back to top)

DEPLOYMENT

The PBMS application is deployed using a CI/CD pipeline that connects GitHub, GitHub Actions, and Render.

How It Works

  1. A developer pushes code to the main branch or merges a pull request.
  2. GitHub Actions runs the workflow defined in .github/workflows/deploy.yml, which executes lint, frontend tests, backend tests, and a build step.
  3. If all checks pass and the trigger was a push to main, the deploy job authenticates with the Render API using secrets stored in the GitHub Render environment and triggers deployment for both services.
  4. Render pulls the latest code, builds, and publishes the backend Web Service and frontend Static Site.

Auto-deploy on Render is set to Off. All deployments are initiated exclusively through the GitHub Actions workflow to ensure no untested code reaches production.

Production Services

Service Type URL
Frontend Static Site (CDN) yourrootsphotography.space
Backend Web Service Render Web Service (internal API)
Database PostgreSQL + Auth Supabase
Payments Payment Processing Stripe
Email Transactional Emails Resend + Supabase Edge Functions

Manual Deployment

If you need to re-deploy without pushing new code (for example, after updating an environment variable on Render):

  1. Go to the GitHub repository and click the Actions tab.
  2. Select the CI/CD GitHub Actions Deploy & Tests Workflow for PBMS workflow.
  3. Click Run Workflow, select the main branch, then click Run Workflow again.

For full deployment documentation including Render Service Configuration, environment variable details, CORS setup, and Supabase redirect URLs, see the Maintenance Manual - Section 4: Deployment.

(back to top)

Contact

Project Members

Westley Valentin - wvalentin@csus.edu       Erds Mabilog - emabilog@csus.edu
Luis De Santiago - lpdesantiago@csus.edu    Munir Omar - muniromar@csus.edu
Ritchie Martinez - ritchiemartinez@csus.edu    Frank Kutsar - fkutsar@csus.edu
Abhijit Singh Ubhi - abhijitsinghubhi@csus.edu  Gaurav Shergill - gauravshergill@csus.edu

CSUS College of Engineering & Computer Science Logo Code Blooded Team Logo

College of Engineering and Computer Science
California State University, Sacramento
6000 J Street, Sacramento, CA 95819
Campus Main Phone: (916) 278-6011
Computer Science Department

Project Link: PBMS

(back to top)

About

Photo Business Management System Senior Capstone Project CSUS '26

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors