Fase 0: scaffold monorepo, SvelteKit skeleton, and dev infrastructure
- Turborepo + pnpm workspaces with apps/web and packages/types - SvelteKit app: Tailwind, Paraglide i18n (en/es), keycloak-js, Supabase client, auth/collective stores, PWA service worker skeleton, all route placeholders - packages/types: domain types (User, Collective, ShoppingList, etc.) and database.ts placeholder for generated types - Justfile with dev, db-*, kc-*, build, backup, restore, deploy recipes - infra/docker-compose.dev.yml: Postgres 15, GoTrue, PostgREST, Realtime v2.83, Storage, Kong (port 8001), Studio, Keycloak 24 - infra/docker-compose.prod.yml, kong.yml, db-init scripts, backup/deploy scripts - keycloak/realm-export.json with colectivo realm and 5 dev test users - supabase/config.toml and seed.sql with sample collective and items - GitHub Actions: ci.yml (lint+typecheck+build) and deploy.yml (GHCR + SSH) - .env.example documenting all required variables - Fixed docker-compose issues: Studio image tag, Kong port conflict (8001), internal role passwords init script, Realtime METRICS_JWT_SECRET/APP_NAME Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
141
keycloak/realm-export.json
Normal file
141
keycloak/realm-export.json
Normal file
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"id": "colectivo",
|
||||
"realm": "colectivo",
|
||||
"displayName": "Colectivo",
|
||||
"enabled": true,
|
||||
"sslRequired": "external",
|
||||
"registrationAllowed": false,
|
||||
"loginWithEmailAllowed": true,
|
||||
"duplicateEmailsAllowed": false,
|
||||
"resetPasswordAllowed": true,
|
||||
"editUsernameAllowed": false,
|
||||
"bruteForceProtected": true,
|
||||
"accessTokenLifespan": 3600,
|
||||
"refreshTokenMaxReuse": 0,
|
||||
"offlineSessionMaxLifespanEnabled": false,
|
||||
"clients": [
|
||||
{
|
||||
"clientId": "colectivo-web",
|
||||
"name": "Colectivo Web App",
|
||||
"enabled": true,
|
||||
"publicClient": true,
|
||||
"standardFlowEnabled": true,
|
||||
"implicitFlowEnabled": false,
|
||||
"directAccessGrantsEnabled": false,
|
||||
"serviceAccountsEnabled": false,
|
||||
"protocol": "openid-connect",
|
||||
"attributes": {
|
||||
"pkce.code.challenge.method": "S256"
|
||||
},
|
||||
"redirectUris": [
|
||||
"http://localhost:5173/*",
|
||||
"http://localhost:3000/*"
|
||||
],
|
||||
"webOrigins": [
|
||||
"http://localhost:5173",
|
||||
"http://localhost:3000"
|
||||
],
|
||||
"fullScopeAllowed": true,
|
||||
"defaultClientScopes": [
|
||||
"web-origins",
|
||||
"profile",
|
||||
"roles",
|
||||
"email"
|
||||
],
|
||||
"optionalClientScopes": [
|
||||
"address",
|
||||
"phone",
|
||||
"offline_access",
|
||||
"microprofile-jwt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"id": "11111111-1111-1111-1111-111111111111",
|
||||
"username": "ana",
|
||||
"email": "ana@dev.local",
|
||||
"emailVerified": true,
|
||||
"enabled": true,
|
||||
"firstName": "Ana",
|
||||
"lastName": "García",
|
||||
"credentials": [
|
||||
{
|
||||
"type": "password",
|
||||
"value": "test1234",
|
||||
"temporary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "22222222-2222-2222-2222-222222222222",
|
||||
"username": "borja",
|
||||
"email": "borja@dev.local",
|
||||
"emailVerified": true,
|
||||
"enabled": true,
|
||||
"firstName": "Borja",
|
||||
"lastName": "López",
|
||||
"credentials": [
|
||||
{
|
||||
"type": "password",
|
||||
"value": "test1234",
|
||||
"temporary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "33333333-3333-3333-3333-333333333333",
|
||||
"username": "carmen",
|
||||
"email": "carmen@dev.local",
|
||||
"emailVerified": true,
|
||||
"enabled": true,
|
||||
"firstName": "Carmen",
|
||||
"lastName": "Martínez",
|
||||
"credentials": [
|
||||
{
|
||||
"type": "password",
|
||||
"value": "test1234",
|
||||
"temporary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "44444444-4444-4444-4444-444444444444",
|
||||
"username": "david",
|
||||
"email": "david@dev.local",
|
||||
"emailVerified": true,
|
||||
"enabled": true,
|
||||
"firstName": "David",
|
||||
"lastName": "Fernández",
|
||||
"credentials": [
|
||||
{
|
||||
"type": "password",
|
||||
"value": "test1234",
|
||||
"temporary": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "55555555-5555-5555-5555-555555555555",
|
||||
"username": "eva",
|
||||
"email": "eva@dev.local",
|
||||
"emailVerified": true,
|
||||
"enabled": true,
|
||||
"firstName": "Eva",
|
||||
"lastName": "Ruiz",
|
||||
"credentials": [
|
||||
{
|
||||
"type": "password",
|
||||
"value": "test1234",
|
||||
"temporary": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"scopeMappings": [],
|
||||
"clientScopeMappings": {},
|
||||
"roles": {
|
||||
"realm": [],
|
||||
"client": {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user