Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
63d9ab6
Changed some of the defaults so the project could deploy.
invalid-email-address Sep 19, 2025
2249726
Changed some of the defaults so the project could deploy correctly.
kevinjnev Sep 19, 2025
654df7f
arthur: added a test api and venv/requirements.txt
arthurnnguyen Sep 23, 2025
5d560f0
Merge branch 'master' into master
arthurnnguyen Sep 23, 2025
4f35d10
added venv and requirments.txt
arthurnnguyen Sep 23, 2025
4e6f799
added index.html
Ivana-B2 Sep 24, 2025
7579fa4
added nathan test api
whattheheckman Sep 24, 2025
54ce01c
add initial backend setup and sql login unit test
arthurnnguyen Oct 8, 2025
66689df
Merge pull request #3 from Thatchworks/feature/backend-unit-test
arthurnnguyen Oct 8, 2025
da04eaf
Created a basic frontend and backend
kevinjnev Oct 8, 2025
29f3df0
Added tests for projects and gallery
kevinjnev Oct 8, 2025
3b488f0
Merged basic frontend and backend changes and removed venv
kevinjnev Oct 21, 2025
6f67502
Fixed github files for tests to run properly
kevinjnev Oct 21, 2025
b50d09e
Made corrections to backend code
kevinjnev Oct 21, 2025
0dae2e0
Added deployment scripts and GitHub Actions
kevinjnev Oct 21, 2025
e020c85
Fixed frontend code for deployment to build correctly
kevinjnev Oct 21, 2025
f27ab5f
Tweaked deployment script to start up correctly
kevinjnev Oct 21, 2025
77d4c7a
Added github action for CI using github secrets
kevinjnev Oct 21, 2025
96d0903
Fixed github action files for deployment tests
kevinjnev Oct 21, 2025
1241d2a
Fixed github actions for deployment tests
kevinjnev Oct 21, 2025
a85d1a9
Merge branch 'master' of https://github.com/Thatchworks/mosaic-projec…
kevinjnev Oct 21, 2025
df37f65
Fixed backend tests for the database
kevinjnev Oct 21, 2025
a503a29
Made simple deployment work correctly
kevinjnev Oct 21, 2025
8a80539
Created simple changes to show CI/CD
kevinjnev Oct 21, 2025
c905882
changed tab title and icon
kevinjnev Oct 21, 2025
b4ac914
fixing secrets for github actions tests
kevinjnev Oct 27, 2025
e628b14
Merge branch 'master' of https://github.com/Thatchworks/mosaic-projec…
kevinjnev Oct 27, 2025
daec255
Made fixes to workflow tests and frontend code
kevinjnev Oct 28, 2025
cd264f2
Made changes to the frontend code I added so the tests would actually…
kevinjnev Oct 28, 2025
1b7b615
Another fix to the workflow files
kevinjnev Oct 28, 2025
56edf49
Made another change to a workflow to properly run a test
kevinjnev Oct 28, 2025
05a981f
Changing playwright test to fit our current app
kevinjnev Oct 28, 2025
429542a
One more playwright fix
kevinjnev Oct 28, 2025
e58a07a
Fixed users not being in a default organization at account creation
kevinjnev Oct 28, 2025
68408d6
Changed how new users are added to a default organization
kevinjnev Oct 28, 2025
0bf48fd
Split login into client and business, and added home page
kevinjnev Nov 3, 2025
9033795
Added ability to create orgs, authorize team members, invite clients …
kevinjnev Nov 3, 2025
d38b9ba
Fixed lint and typescript errors from new changes
kevinjnev Nov 3, 2025
a7e8654
Changed how users are added to organizations, and now shows all other…
kevinjnev Nov 3, 2025
ec60ea1
Tweaked deployment tests to actually run with a db properly
kevinjnev Nov 3, 2025
16d344d
Another fix to the deploy tests
kevinjnev Nov 3, 2025
2302860
Made more fixes for the deploy tests
kevinjnev Nov 3, 2025
652de35
One more fix for testing email during deploy
kevinjnev Nov 3, 2025
ec20de7
Changed how galleries are viewed and created.
kevinjnev Nov 3, 2025
af20651
Merge branch 'master' into iva-testing
Ivana-B2 Nov 10, 2025
edc242c
Modified how clients are added to projects, and made fixes to the cli…
kevinjnev Nov 12, 2025
f27d420
Removed tests for old removed template features
kevinjnev Nov 12, 2025
0956771
Fixed small linting errors
kevinjnev Nov 12, 2025
2d6c1c6
Added Gallery Functionality
Ivana-B2 Nov 12, 2025
4b80870
added a timeline feature for the team member project dashboard
arthurnnguyen Nov 12, 2025
12f92cc
Merge pull request #18 from Thatchworks/feature/timeline-team-member
arthurnnguyen Nov 12, 2025
fe069e8
Fixed the team member and client project sync and dashboard
arthurnnguyen Nov 18, 2025
05eb5ad
Merge branch 'master' into feature/client-dash
arthurnnguyen Nov 19, 2025
c0754d6
Merge pull request #21 from Thatchworks/feature/client-dash
arthurnnguyen Nov 19, 2025
3b148c2
fixed backend build bug
arthurnnguyen Nov 19, 2025
062e669
revised the project timeline
arthurnnguyen Nov 25, 2025
740137a
Merge branch 'master' into iva-testing
Ivana-B2 Nov 27, 2025
e287736
merged main to my branch
Ivana-B2 Nov 27, 2025
9f255f6
Updated galleries with more features
Ivana-B2 Nov 29, 2025
7aa91f3
galleries have upload dates and fize sizes added
Ivana-B2 Nov 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
45 changes: 0 additions & 45 deletions .env

This file was deleted.

138 changes: 138 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Deploy to EC2

on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]

jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true

- name: Set up Python
run: uv python install 3.10

- name: Install dependencies
run: |
cd backend
uv sync

- name: Run migrations
env:
PROJECT_NAME: Mosaic Test
POSTGRES_SERVER: localhost
POSTGRES_PORT: 5432
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
SECRET_KEY: test-secret-key-for-testing
FIRST_SUPERUSER: [email protected]
FIRST_SUPERUSER_PASSWORD: testpassword
ENVIRONMENT: local
run: |
cd backend
uv run alembic upgrade head

- name: Run tests
env:
PROJECT_NAME: Test Project
POSTGRES_SERVER: localhost
POSTGRES_PORT: 5432
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: test_db
SECRET_KEY: test-secret-key-for-testing
FIRST_SUPERUSER: [email protected]
FIRST_SUPERUSER_PASSWORD: testpassword
ENVIRONMENT: local
run: |
cd backend
uv run pytest tests/ -v

deploy:
needs: test
runs-on: ubuntu-latest
if: always() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup SSH
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.EC2_SSH_KEY }}

- name: Add EC2 to known hosts
run: |
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts

- name: Deploy to EC2
run: |
ssh ec2-user@${{ secrets.EC2_HOST }} 'bash -s' << 'ENDSSH'
cd mosaic-project-cs4800 || cd mosaic-project-cs4800-main
git pull origin main || git pull origin master
chmod +x deploy-ip.sh
./deploy-ip.sh ${{ secrets.EC2_HOST }}
cat > .env << 'ENVEOF'
ENVIRONMENT=production
DOMAIN=${{ secrets.EC2_HOST }}
PROJECT_NAME=Mosaic Project
STACK_NAME=mosaic-project-production
BACKEND_CORS_ORIGINS=http://${{ secrets.EC2_HOST }}:5173,http://${{ secrets.EC2_HOST }}:80,http://${{ secrets.EC2_HOST }}
FRONTEND_HOST=http://${{ secrets.EC2_HOST }}:5173
SECRET_KEY=${{ secrets.SECRET_KEY }}
FIRST_SUPERUSER=${{ secrets.FIRST_SUPERUSER }}
FIRST_SUPERUSER_PASSWORD=${{ secrets.FIRST_SUPERUSER_PASSWORD }}
POSTGRES_SERVER=db
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB=app
SMTP_HOST=
SMTP_USER=
SMTP_PASSWORD=
EMAILS_FROM_EMAIL=
DOCKER_IMAGE_BACKEND=mosaic-backend
DOCKER_IMAGE_FRONTEND=mosaic-frontend
TAG=latest
ENVEOF
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
docker compose -f docker-compose.production.yml down
docker compose -f docker-compose.production.yml up -d --build
sleep 30
docker compose -f docker-compose.production.yml ps
curl -f http://localhost:8000/api/v1/utils/health-check/ || echo "Backend health check failed"
ENDSSH

- name: Verify deployment
run: |
# Wait a bit for services to fully start
sleep 10

# Test if the application is accessible
curl -f http://${{ secrets.EC2_HOST }}:8000/api/v1/utils/health-check/ || echo "Backend not accessible"
curl -f http://${{ secrets.EC2_HOST }} || echo "Frontend not accessible"
37 changes: 31 additions & 6 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,38 @@ jobs:
if: ${{ needs.changes.outputs.changed == 'true' }}
timeout-minutes: 60
runs-on: ubuntu-latest
env:
DOMAIN: localhost
ENVIRONMENT: local
FRONTEND_HOST: http://localhost:5173
BACKEND_CORS_ORIGINS: http://localhost:5173,http://localhost:8000
SECRET_KEY: ${{ secrets.SECRET_KEY }}
FIRST_SUPERUSER: ${{ secrets.FIRST_SUPERUSER }}
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
POSTGRES_SERVER: db
POSTGRES_PORT: 5432
POSTGRES_DB: app
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
SMTP_HOST: ""
SMTP_USER: ""
SMTP_PASSWORD: ""
EMAILS_FROM_EMAIL: [email protected]
SENTRY_DSN: ""
PROJECT_NAME: "Mosaic Project"
STACK_NAME: mosaic-project-local
DOCKER_IMAGE_BACKEND: backend
DOCKER_IMAGE_FRONTEND: frontend
strategy:
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
fail-fast: false
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
- name: Create .env file
run: touch .env
- uses: actions/setup-node@v5
with:
node-version: lts/*
- uses: actions/setup-python@v6
Expand All @@ -60,7 +84,7 @@ jobs:
with:
limit-access-to-actor: true
- name: Install uv
uses: astral-sh/setup-uv@v7
uses: astral-sh/setup-uv@v6
with:
version: "0.4.15"
enable-cache: true
Expand All @@ -75,10 +99,11 @@ jobs:
- run: docker compose down -v --remove-orphans
- name: Run Playwright tests
run: docker compose run --rm playwright npx playwright test --fail-on-flaky-tests --trace=retain-on-failure --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}

- run: docker compose down -v --remove-orphans
- name: Upload blob report to GitHub Actions Artifacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: blob-report-${{ matrix.shardIndex }}
path: frontend/blob-report
Expand All @@ -94,14 +119,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
- uses: actions/setup-node@v5
with:
node-version: 20
- name: Install dependencies
run: npm ci
working-directory: frontend
- name: Download blob reports from GitHub Actions Artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v5
with:
path: frontend/all-blob-reports
pattern: blob-report-*
Expand All @@ -110,7 +135,7 @@ jobs:
run: npx playwright merge-reports --reporter html ./all-blob-reports
working-directory: frontend
- name: Upload HTML report
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v4
with:
name: html-report--attempt-${{ github.run_attempt }}
path: frontend/playwright-report
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/test-backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,33 @@ on:
jobs:
test-backend:
runs-on: ubuntu-latest
env:
DOMAIN: localhost
ENVIRONMENT: local
FRONTEND_HOST: http://localhost:5173
BACKEND_CORS_ORIGINS: http://localhost:5173,http://localhost:8000
SECRET_KEY: ${{ secrets.SECRET_KEY }}
FIRST_SUPERUSER: ${{ secrets.FIRST_SUPERUSER }}
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
POSTGRES_SERVER: localhost
POSTGRES_PORT: 5432
POSTGRES_DB: app
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
SMTP_HOST: ""
SMTP_USER: ""
SMTP_PASSWORD: ""
EMAILS_FROM_EMAIL: [email protected]
SENTRY_DSN: ""
PROJECT_NAME: "Mosaic Project"
STACK_NAME: mosaic-project-local
DOCKER_IMAGE_BACKEND: backend
DOCKER_IMAGE_FRONTEND: frontend
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Create .env file
run: touch .env
- name: Set up Python
uses: actions/setup-python@v6
with:
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/test-docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,33 @@ jobs:

test-docker-compose:
runs-on: ubuntu-latest
env:
DOMAIN: localhost
ENVIRONMENT: local
FRONTEND_HOST: http://localhost:5173
BACKEND_CORS_ORIGINS: http://localhost:5173,http://localhost:8000
SECRET_KEY: ${{ secrets.SECRET_KEY }}
FIRST_SUPERUSER: ${{ secrets.FIRST_SUPERUSER }}
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
POSTGRES_SERVER: db
POSTGRES_PORT: 5432
POSTGRES_DB: app
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
SMTP_HOST: ""
SMTP_USER: ""
SMTP_PASSWORD: ""
EMAILS_FROM_EMAIL: [email protected]
SENTRY_DSN: ""
PROJECT_NAME: "Mosaic Project"
STACK_NAME: mosaic-project-local
DOCKER_IMAGE_BACKEND: backend
DOCKER_IMAGE_FRONTEND: frontend
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Create .env file
run: touch .env
- run: docker compose build
- run: docker compose down -v --remove-orphans
- run: docker compose up -d --wait backend frontend adminer
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
.env
.vscode
node_modules/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

# OpenAPI generated file
frontend/openapi.json

# Editor backup files
*~
*.swp
*.swo
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/mosaic-project-cs4800.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading