Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
208a36d
✨ Implement Redis caching and middleware enhancements
azzi2023 Dec 8, 2025
5bd3ecc
Revert specific files to previous commit state
azzi2023 Dec 9, 2025
4aeed7e
Add Docker Compose configurations for development and testing
azzi2023 Dec 9, 2025
b2f3672
Refactor Docker Compose configurations for development environment
azzi2023 Dec 9, 2025
5c97620
Merge pull request #1 from azzi2023/feat/redis-cache-middleware
azzi2023 Dec 12, 2025
4de438c
Merge pull request #2 from azzi2023/setup/core-services-revamp
azzi2023 Dec 12, 2025
ed29e12
Merge branch 'master' into master
azzi2023 Dec 15, 2025
77a09c2
Refactor tests and remove unused files
azzi2023 Dec 15, 2025
e4ecf33
Merge branch 'master' of https://github.com/azzi2023/organyz-python-b…
azzi2023 Dec 15, 2025
09c0f46
Revamp core services: add Redis support, enhance WebEngage integratio…
azzi2023 Dec 15, 2025
765cfe2
refactor: remove signup, login, and password reset functionality
azzi2023 Dec 15, 2025
27c6f14
fix: update GitHub token in add-to-project workflow
azzi2023 Dec 15, 2025
60adeab
refactor: remove frontend references and disable related workflows
azzi2023 Dec 16, 2025
b203bca
refactor: remove frontend references and update documentation for bac…
azzi2023 Dec 16, 2025
fa72a04
refactor: enhance Redis integration, improve WebSocketManager, and ad…
azzi2023 Dec 16, 2025
1de9b83
refactor: update GitHub workflows, enhance labeler configuration, and…
azzi2023 Dec 16, 2025
da88b6d
refactor: enhance application structure and improve error handling
azzi2023 Dec 16, 2025
43a22ad
refactor: implement initial admin user creation and enhance pre-start…
azzi2023 Dec 16, 2025
14b5bd4
refactor: improve code readability and formatting across multiple files
azzi2023 Dec 16, 2025
8fdf18d
refactor: ensure coverage is installed in the Docker container for te…
azzi2023 Dec 16, 2025
989fd18
refactor: enhance test workflow to bootstrap pip and install dependen…
azzi2023 Dec 16, 2025
080f814
refactor: update Dockerfile and pyproject.toml to streamline test dep…
azzi2023 Dec 16, 2025
9b8016d
refactor: simplify pip bootstrapping in test workflow for backend con…
azzi2023 Dec 16, 2025
d15a800
refactor: add coverage dependency to project dependencies in pyprojec…
azzi2023 Dec 17, 2025
618ed7f
refactor: improve error handling and configuration loading in auth an…
azzi2023 Dec 17, 2025
a524c4b
refactor: update label checker version, enhance password security, an…
azzi2023 Dec 17, 2025
71c7c0a
refactor: update permissions for initdb scripts in Dockerfile
azzi2023 Dec 17, 2025
27b330e
refactor: streamline initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
599815e
refactor: update initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
c27ec9f
refactor: adjust permissions for initdb scripts in Dockerfile
azzi2023 Dec 17, 2025
1bb9f3a
refactor: consolidate initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
198b549
refactor: update ownership for initdb script in Dockerfile
azzi2023 Dec 17, 2025
3dade79
refactor: update DB migration command in test workflow
azzi2023 Dec 17, 2025
f90fcfc
refactor: enhance test workflow with improved DB setup and logging
azzi2023 Dec 17, 2025
22916e0
refactor: update project permissions and enhance DB volume setup in w…
azzi2023 Dec 17, 2025
225fd32
refactor: standardize user password usage in settings and tests
azzi2023 Dec 17, 2025
f4b8cb8
refactor: improve exception handling during WebSocketManager stop pro…
azzi2023 Dec 17, 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.
16 changes: 3 additions & 13 deletions .env
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
# Domain
# This would be set to the production domain with an env var on deployment
# used by Traefik to transmit traffic and aqcuire TLS certificates
DOMAIN=localhost
# To test the local Traefik config
# DOMAIN=localhost.tiangolo.com

# Used by the backend to generate links in emails to the frontend
FRONTEND_HOST=http://localhost:5173
# In staging and production, set this env var to the frontend host, e.g.
# FRONTEND_HOST=https://dashboard.example.com

# Environment: local, staging, production
DOMAIN=localhost
ENVIRONMENT=local

PROJECT_NAME="Full Stack FastAPI Project"
Expand Down Expand Up @@ -42,4 +31,5 @@ SENTRY_DSN=

# Configure these with your own Docker registry images
DOCKER_IMAGE_BACKEND=backend
DOCKER_IMAGE_FRONTEND=frontend

REDIS_URL=redis://localhost:6379/0
10 changes: 0 additions & 10 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,10 @@ updates:
prefix: ⬆
labels: [dependencies, internal]
# npm
- package-ecosystem: npm
directory: /frontend
schedule:
interval: weekly
commit-message:
prefix: ⬆
labels: [dependencies, internal]
ignore:
- dependency-name: "@hey-api/openapi-ts"
# Docker
- package-ecosystem: docker
directories:
- /backend
- /frontend
schedule:
interval: weekly
commit-message:
Expand Down
76 changes: 56 additions & 20 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,61 @@
# Automatic labeler configuration
# Maps changed files to labels applied by actions/labeler

feature:
- "backend/**"
- "app/**"
- "src/**"

docs:
- "README.md"
- "docs/**"
- "*.md"

bug:
- "tests/**"
- "backend/tests/**"

refactor:
- "**/*.py"
- "backend/**"

internal:
- "docker/**"
- "deployment.md"
- ".github/**"

security:
- "**/security/**"

upgrade:
- "pyproject.toml"
- "requirements.txt"

breaking:
- "alembic/**"

lang-all:
- "translations/**"
docs:
- all:
- changed-files:
- any-glob-to-any-file:
- '**/*.md'
- all-globs-to-all-files:
- '!frontend/**'
- '!backend/**'
- '!.github/**'
- '!scripts/**'
- '!.gitignore'
- '!.pre-commit-config.yaml'
- changed-files:
- any-glob-to-any-file:
- "**/*.md"
- all-globs-to-all-files:
- "!backend/**"
- "!.github/**"
- "!scripts/**"
- "!.gitignore"
- "!.pre-commit-config.yaml"

internal:
- all:
- changed-files:
- any-glob-to-any-file:
- .github/**
- scripts/**
- .gitignore
- .pre-commit-config.yaml
- all-globs-to-all-files:
- '!./**/*.md'
- '!frontend/**'
- '!backend/**'
- changed-files:
- any-glob-to-any-file:
- .github/**
- scripts/**
- .gitignore
- .pre-commit-config.yaml
- all-globs-to-all-files:
- "!./**/*.md"
- "!backend/**"
59 changes: 5 additions & 54 deletions .github/workflows/generate-client.yml
Original file line number Diff line number Diff line change
@@ -1,60 +1,11 @@
name: Generate Client
name: Generate Client (disabled)

on:
pull_request:
types:
- opened
- synchronize
workflow_dispatch: {}

jobs:
generate-client:
permissions:
contents: write
noop:
runs-on: ubuntu-latest
steps:
# For PRs from forks
- uses: actions/checkout@v6
# For PRs from the same repo
- uses: actions/checkout@v6
if: ( github.event_name != 'pull_request' || github.secret_source == 'Actions' )
with:
ref: ${{ github.head_ref }}
token: ${{ secrets.FULL_STACK_FASTAPI_TEMPLATE_REPO_TOKEN }}
- uses: actions/setup-node@v6
with:
node-version: lts/*
- uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.4.15"
enable-cache: true
- name: Install dependencies
run: npm ci
working-directory: frontend
- run: uv sync
working-directory: backend
- run: uv run bash scripts/generate-client.sh
env:
VIRTUAL_ENV: backend/.venv
SECRET_KEY: just-for-generating-client
POSTGRES_PASSWORD: just-for-generating-client
FIRST_SUPERUSER_PASSWORD: just-for-generating-client
- name: Add changes to git
run: |
git config --local user.email "[email protected]"
git config --local user.name "github-actions"
git add frontend/src/client
# Same repo PRs
- name: Push changes
if: ( github.event_name != 'pull_request' || github.secret_source == 'Actions' )
run: |
git diff --staged --quiet || git commit -m "✨ Autogenerate frontend client"
git push
# Fork PRs
- name: Check changes
if: ( github.event_name == 'pull_request' && github.secret_source != 'Actions' )
run: |
git diff --staged --quiet || (echo "Changes detected in generated client, run scripts/generate-client.sh and commit the changes" && exit 1)
- name: No-op
run: echo "Frontend/client generation disabled for this repository."
10 changes: 6 additions & 4 deletions .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v6
if: ${{ github.event.action != 'labeled' && github.event.action != 'unlabeled' }}
- run: echo "Done adding labels"
- uses: actions/labeler@v6
if: ${{ github.event.action != 'labeled' && github.event.action != 'unlabeled' }}
- run: echo "Done adding labels"
# Run this after labeler applied labels
check-labels:
needs:
Expand All @@ -27,7 +27,9 @@ jobs:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: docker://agilepathway/pull-request-label-checker:latest
- name: Check PR labels (tolerant)
uses: docker://agilepathway/pull-request-label-checker:v1
with:
one_of: breaking,security,feature,bug,refactor,upgrade,docs,lang-all,internal
repo_token: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
130 changes: 5 additions & 125 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -1,131 +1,11 @@
name: Playwright Tests
name: Playwright (disabled)

on:
push:
branches:
- master
pull_request:
types:
- opened
- synchronize
workflow_dispatch:
inputs:
debug_enabled:
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: 'false'
workflow_dispatch: {}

jobs:
changes:
noop:
runs-on: ubuntu-latest
# Set job outputs to values from filter step
outputs:
changed: ${{ steps.filter.outputs.changed }}
steps:
- uses: actions/checkout@v6
# For pull requests it's not necessary to checkout the code but for the main branch it is
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
changed:
- backend/**
- frontend/**
- .env
- docker-compose*.yml
- .github/workflows/playwright.yml

test-playwright:
needs:
- changes
if: ${{ needs.changes.outputs.changed == 'true' }}
timeout-minutes: 60
runs-on: ubuntu-latest
strategy:
matrix:
shardIndex: [1, 2, 3, 4]
shardTotal: [4]
fail-fast: false
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: lts/*
- uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' }}
with:
limit-access-to-actor: true
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.4.15"
enable-cache: true
- run: uv sync
working-directory: backend
- run: npm ci
working-directory: frontend
- run: uv run bash scripts/generate-client.sh
env:
VIRTUAL_ENV: backend/.venv
- run: docker compose build
- 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
with:
name: blob-report-${{ matrix.shardIndex }}
path: frontend/blob-report
include-hidden-files: true
retention-days: 1

merge-playwright-reports:
needs:
- test-playwright
- changes
# Merge reports after playwright-tests, even if some shards have failed
if: ${{ !cancelled() && needs.changes.outputs.changed == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
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
with:
path: frontend/all-blob-reports
pattern: blob-report-*
merge-multiple: true
- name: Merge into HTML Report
run: npx playwright merge-reports --reporter html ./all-blob-reports
working-directory: frontend
- name: Upload HTML report
uses: actions/upload-artifact@v5
with:
name: html-report--attempt-${{ github.run_attempt }}
path: frontend/playwright-report
retention-days: 30
include-hidden-files: true

# https://github.com/marketplace/actions/alls-green#why
alls-green-playwright: # This job does nothing and is only used for the branch protection
if: always()
needs:
- test-playwright
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
allowed-skips: test-playwright
- name: No-op
run: echo "Playwright tests disabled — repository has no frontend to test."
Loading
Loading