Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
4488936
docs(vision): add VISION, DECISIONS and PROGRESS scaffolding
LuanTrindade95 Jun 6, 2026
9045e88
feat(backend): scaffold Laravel foundation
LuanTrindade95 Jun 6, 2026
f8eb667
feat(frontend): scaffold Angular SSR foundation
LuanTrindade95 Jun 6, 2026
87aebf3
chore(docker): add local infrastructure stack
LuanTrindade95 Jun 6, 2026
700e1c0
ci: add backend and frontend validation pipeline
LuanTrindade95 Jun 6, 2026
12ef725
docs(readme): add CommandSphere setup guide
LuanTrindade95 Jun 6, 2026
bceec24
docs(adr): record foundation decisions
LuanTrindade95 Jun 6, 2026
fa0a242
fix(docker): install required PHP bcmath extension
LuanTrindade95 Jun 6, 2026
57a2c89
fix(docker): copy Laravel app before composer scripts
LuanTrindade95 Jun 6, 2026
cdffb35
docs(progress): add foundation validation evidence
LuanTrindade95 Jun 6, 2026
a7c8f78
chore(backend): add data transfer object package
LuanTrindade95 Jun 6, 2026
88c2453
feat(backend): add domain data migrations
LuanTrindade95 Jun 6, 2026
96ff1f5
feat(backend): add domain models and DTOs
LuanTrindade95 Jun 6, 2026
55d6452
feat(backend): add community demo seed data
LuanTrindade95 Jun 6, 2026
433ef0e
docs(domain): record data modeling decisions
LuanTrindade95 Jun 6, 2026
8ba0d69
feat(backend): prepare users for sanctum discord auth
LuanTrindade95 Jun 6, 2026
8ee693d
feat(backend): add discord and session auth endpoints
LuanTrindade95 Jun 6, 2026
06d21c4
feat(backend): enforce community scoped auth policies
LuanTrindade95 Jun 6, 2026
cae5ca1
docs(auth): record oauth and dev-login decisions
LuanTrindade95 Jun 6, 2026
fcba9f5
feat(backend): add github markdown client
LuanTrindade95 Jun 6, 2026
e3861b0
feat(backend): parse markdown commands from fixtures
LuanTrindade95 Jun 6, 2026
0fae62c
feat(backend): run idempotent ingestion pipeline
LuanTrindade95 Jun 6, 2026
e1d67e2
feat(backend): expose ingestion API endpoints
LuanTrindade95 Jun 6, 2026
399f5b2
docs(ingestion): record parser pipeline decisions
LuanTrindade95 Jun 6, 2026
90dc43f
feat(backend): configure command indexing
LuanTrindade95 Jun 6, 2026
4889e51
feat(backend): add command search endpoint
LuanTrindade95 Jun 6, 2026
1390ba0
feat(backend): add cached catalog reads
LuanTrindade95 Jun 6, 2026
4d9f2db
feat(backend): add polymorphic favorites API
LuanTrindade95 Jun 6, 2026
eb7c844
feat(backend): add analytics discovery tests
LuanTrindade95 Jun 6, 2026
a23c8a9
fix(backend): expand meilisearch key in generated env
LuanTrindade95 Jun 6, 2026
b6f1325
docs(discovery): record search cache analytics decisions
LuanTrindade95 Jun 6, 2026
4c7c8a0
feat(frontend): configure SSR-aware transloco
LuanTrindade95 Jun 6, 2026
2b17347
feat(frontend): add dark ui kit and command palette
LuanTrindade95 Jun 6, 2026
0667506
feat(frontend): add auth signals and HTTP guards
LuanTrindade95 Jun 6, 2026
62d0023
feat(frontend): add SSR shell foundation
LuanTrindade95 Jun 6, 2026
7afa38b
docs(frontend): record phase 4a decisions
LuanTrindade95 Jun 6, 2026
143fc47
fix(backend): complete discovery contract for frontend domain screens
LuanTrindade95 Jun 6, 2026
dd33843
docs(discovery): note frontend contract completion
LuanTrindade95 Jun 6, 2026
763e1d3
feat(frontend): add domain API clients and markdown renderer
LuanTrindade95 Jun 6, 2026
de4cdc0
feat(frontend): build domain screens for catalog discovery
LuanTrindade95 Jun 6, 2026
11785ce
test(frontend): cover domain screen interactions
LuanTrindade95 Jun 6, 2026
fd3bf16
docs(frontend): record phase 4b completion decisions
LuanTrindade95 Jun 6, 2026
49a32e0
feat(backend): add automated sync and ingestion broadcasts
LuanTrindade95 Jun 6, 2026
07f345c
feat(frontend): stream ingestion status updates
LuanTrindade95 Jun 6, 2026
6ca6e0e
docs: record automation realtime phase decisions
LuanTrindade95 Jun 6, 2026
4e2bafb
test: add portfolio coverage and e2e happy paths
LuanTrindade95 Jun 7, 2026
bc74d2b
fix(backend): harden public discovery for ssr
LuanTrindade95 Jun 7, 2026
61705e5
feat(frontend): add portfolio landing and ssr seo
LuanTrindade95 Jun 7, 2026
347549d
chore: add production docker and portfolio documentation
LuanTrindade95 Jun 7, 2026
4505db1
docs: mark commandsphere v1 complete
LuanTrindade95 Jun 7, 2026
f75dbcf
fix(frontend): polish public ssr performance
LuanTrindade95 Jun 7, 2026
1ea252c
fix(frontend): restore final visual layout
LuanTrindade95 Jun 7, 2026
7dc6518
polish(frontend): refine portfolio landing and mobile admin nav
LuanTrindade95 Jun 7, 2026
993a2f7
docs: bootstrap commandsphere brain and audit
LuanTrindade95 Jun 13, 2026
dbf728a
fix(frontend): externalize runtime public config
LuanTrindade95 Jun 13, 2026
406bab2
fix(auth): validate Discord OAuth state
LuanTrindade95 Jun 13, 2026
aa233c5
ci: add service-backed validation gates
LuanTrindade95 Jun 13, 2026
34eea79
fix(ingestion): prevent overlapping runs
LuanTrindade95 Jun 13, 2026
7e4d9ea
fix(analytics): bound reporting periods
LuanTrindade95 Jun 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.git
.github
backend/vendor
backend/storage/logs
backend/storage/framework/cache
backend/storage/framework/sessions
backend/storage/framework/testing
backend/storage/framework/views
frontend/.angular
frontend/coverage
frontend/dist
frontend/node_modules
frontend/playwright-report
frontend/test-results
node_modules
21 changes: 21 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MEILISEARCH_MASTER_KEY=local_meilisearch_master_key
REVERB_APP_ID=commandsphere-local
REVERB_APP_KEY=local-reverb-key
REVERB_APP_SECRET=local-reverb-secret
APP_KEY=
APP_URL=http://localhost:8000
COMMANDSPHERE_PUBLIC_ORIGIN=http://localhost:4200
COMMANDSPHERE_API_PUBLIC_URL=http://localhost:8000/api/v1
COMMANDSPHERE_ALLOWED_HOSTS=localhost,127.0.0.1
COMMANDSPHERE_REVERB_PUBLIC_HOST=localhost
COMMANDSPHERE_REVERB_PUBLIC_PORT=8080
COMMANDSPHERE_REVERB_PUBLIC_SCHEME=http
DB_DATABASE=commandsphere
DB_USERNAME=commandsphere
DB_PASSWORD=
DB_ROOT_PASSWORD=
GITHUB_TOKEN=
GITHUB_WEBHOOK_SECRET=
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_REDIRECT_URI=http://localhost:4200/auth/discord/callback
134 changes: 134 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
name: CI

on:
pull_request:
push:
branches:
- main
- "feature/**"
- "fix/**"
- "refactor/**"
- "docs/**"

jobs:
backend:
name: Backend
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: commandsphere_test
ports:
- "3306:3306"
options: >-
--health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -proot"
--health-interval=10s
--health-timeout=5s
--health-retries=10
redis:
image: redis:7-alpine
ports:
- "6379:6379"
options: >-
--health-cmd="redis-cli ping"
--health-interval=10s
--health-timeout=5s
--health-retries=10
meilisearch:
image: getmeili/meilisearch:v1.12
env:
MEILI_ENV: development
MEILI_MASTER_KEY: commandsphere-test-master-key
ports:
- "7700:7700"

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

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.3"
extensions: bcmath, mbstring, pdo_mysql, redis, pcntl, posix, zip
coverage: none

- name: Wait for Meilisearch
run: |
for attempt in {1..30}; do
if curl -fsS http://127.0.0.1:7700/health; then
exit 0
fi
sleep 2
done
echo "Meilisearch did not become healthy in time."
exit 1

- name: Install dependencies
working-directory: backend
run: composer install --no-interaction --prefer-dist --no-progress

- name: Composer audit
working-directory: backend
run: composer audit

- name: Pint
working-directory: backend
run: ./vendor/bin/pint --test

- name: Pest
working-directory: backend
env:
APP_ENV: testing
APP_KEY: base64:Fx6s3fIDiYxFNwNf0U8et7uRNwXU0kZKNjJUJt4xbnQ=
BCRYPT_ROUNDS: 4
DB_CONNECTION: mysql
DB_HOST: 127.0.0.1
DB_PORT: 3306
DB_DATABASE: commandsphere_test
DB_USERNAME: root
DB_PASSWORD: root
CACHE_STORE: array
MAIL_MAILER: array
MEILISEARCH_HOST: http://127.0.0.1:7700
MEILISEARCH_KEY: commandsphere-test-master-key
QUEUE_CONNECTION: sync
SESSION_DRIVER: array
run: ./vendor/bin/pest

frontend:
name: Frontend
runs-on: ubuntu-latest

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

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Install dependencies
working-directory: frontend
run: npm ci

- name: Typecheck
working-directory: frontend
run: npm run lint

- name: Jest
working-directory: frontend
run: npm test -- --runInBand

- name: Dependency audit
working-directory: frontend
run: npm audit --audit-level=critical

- name: Build SSR
working-directory: frontend
run: npm run build
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.env
frontend/playwright-report/
frontend/test-results/
frontend/coverage/
Loading
Loading