Files
budget-app/apps/appwrite/appwrite.json
Kushal Gaywala e0e0cc65f1 chore: convert to Turborepo + npm workspaces monorepo
- Move React/Vite frontend to apps/web/ (@budgetwise/web)
- Add apps/appwrite/ (@budgetwise/appwrite) to source-control the
  Appwrite backend: declarative schema in appwrite.json (5 collections),
  CLI-based deploy.sh for containerized use, functions/ dir for future
  Appwrite Functions
- Add turbo.json for task orchestration (build, deploy, dev)
- Replace .gitlab-ci.yml with Woodpecker CI pipelines in .woodpecker/:
    web-production.yml  — push to main → build + rsync to prod
    web-staging.yml     — push to staging → build + rsync to staging
    web-preview.yml     — PR open → deploy to {pr}.{domain}; PR close → cleanup
    appwrite.yml        — schema changes in apps/appwrite/ → CLI deploy
- All secrets injected via Woodpecker CI (no committed .env files)
2026-02-28 19:16:26 +01:00

170 lines
7.6 KiB
JSON

{
"$schema": "https://appwrite.io/sdk/schemas/appwrite.json",
"projectId": "",
"projectName": "BudgetWise",
"databases": [
{
"databaseId": "budget_db",
"name": "BudgetWise",
"enabled": true,
"collections": [
{
"databaseId": "budget_db",
"collectionId": "balance_sheets",
"name": "Balance Sheets",
"enabled": true,
"documentSecurity": false,
"permissions": [
"read(\"users\")",
"create(\"users\")",
"update(\"users\")",
"delete(\"users\")"
],
"attributes": [
{ "key": "month", "type": "integer", "required": true, "array": false },
{ "key": "year", "type": "integer", "required": true, "array": false },
{ "key": "buffer_type", "type": "string", "size": 20, "required": true, "array": false },
{ "key": "buffer_value", "type": "float", "required": true, "default": 0, "array": false },
{ "key": "user_id", "type": "string", "size": 64, "required": true, "array": false }
],
"indexes": [
{
"key": "user_month_year",
"type": "key",
"attributes": ["user_id", "month", "year"],
"orders": ["ASC", "DESC", "DESC"]
}
]
},
{
"databaseId": "budget_db",
"collectionId": "incomes",
"name": "Incomes",
"enabled": true,
"documentSecurity": false,
"permissions": [
"read(\"users\")",
"create(\"users\")",
"update(\"users\")",
"delete(\"users\")"
],
"attributes": [
{ "key": "balance_sheet_id", "type": "string", "size": 64, "required": true, "array": false },
{ "key": "name", "type": "string", "size": 128,"required": true, "array": false },
{ "key": "amount", "type": "float", "required": true, "array": false },
{ "key": "frequency", "type": "string", "size": 20, "required": true, "array": false },
{ "key": "user_id", "type": "string", "size": 64, "required": true, "array": false }
],
"indexes": [
{
"key": "user_sheet",
"type": "key",
"attributes": ["user_id", "balance_sheet_id"],
"orders": []
}
]
},
{
"databaseId": "budget_db",
"collectionId": "buckets",
"name": "Buckets",
"enabled": true,
"documentSecurity": false,
"permissions": [
"read(\"users\")",
"create(\"users\")",
"update(\"users\")",
"delete(\"users\")"
],
"attributes": [
{ "key": "name", "type": "string", "size": 128, "required": true, "array": false },
{ "key": "description", "type": "string", "size": 512, "required": false, "default": "", "array": false },
{ "key": "type", "type": "string", "size": 32, "required": true, "array": false },
{ "key": "current_balance", "type": "float", "required": true, "default": 0, "array": false },
{ "key": "goal_amount", "type": "float", "required": false, "default": 0, "array": false },
{ "key": "goal_type", "type": "string", "size": 20, "required": false, "default": "amount", "array": false },
{ "key": "goal_frequency", "type": "string", "size": 20, "required": false, "default": "monthly", "array": false },
{ "key": "return_percent", "type": "float", "required": false, "default": 0, "array": false },
{ "key": "return_frequency", "type": "string", "size": 20, "required": false, "default": "yearly", "array": false },
{ "key": "color", "type": "string", "size": 16, "required": true, "array": false },
{ "key": "sort_order", "type": "integer", "required": false, "default": 0, "array": false },
{ "key": "user_id", "type": "string", "size": 64, "required": true, "array": false }
],
"indexes": [
{
"key": "user_order",
"type": "key",
"attributes": ["user_id", "sort_order"],
"orders": ["ASC", "ASC"]
}
]
},
{
"databaseId": "budget_db",
"collectionId": "debts",
"name": "Debts",
"enabled": true,
"documentSecurity": false,
"permissions": [
"read(\"users\")",
"create(\"users\")",
"update(\"users\")",
"delete(\"users\")"
],
"attributes": [
{ "key": "name", "type": "string", "size": 128, "required": true, "array": false },
{ "key": "principal", "type": "float", "required": true, "array": false },
{ "key": "remaining_balance", "type": "float", "required": true, "array": false },
{ "key": "interest_rate", "type": "float", "required": true, "array": false },
{ "key": "interest_frequency", "type": "string", "size": 20, "required": true, "array": false },
{ "key": "term_months", "type": "integer", "required": true, "array": false },
{ "key": "monthly_payment", "type": "float", "required": true, "array": false },
{ "key": "is_auto_calculated", "type": "boolean", "required": true, "default": false, "array": false },
{ "key": "start_date", "type": "string", "size": 24, "required": true, "array": false },
{ "key": "user_id", "type": "string", "size": 64, "required": true, "array": false }
],
"indexes": [
{
"key": "user_id_idx",
"type": "key",
"attributes": ["user_id"],
"orders": []
}
]
},
{
"databaseId": "budget_db",
"collectionId": "transactions",
"name": "Transactions",
"enabled": true,
"documentSecurity": false,
"permissions": [
"read(\"users\")",
"create(\"users\")",
"update(\"users\")",
"delete(\"users\")"
],
"attributes": [
{ "key": "bucket_id", "type": "string", "size": 64, "required": true, "array": false },
{ "key": "type", "type": "string", "size": 20, "required": true, "array": false },
{ "key": "amount", "type": "float", "required": true, "array": false },
{ "key": "date", "type": "string", "size": 24, "required": true, "array": false },
{ "key": "notes", "type": "string", "size": 512, "required": false, "default": "", "array": false },
{ "key": "balance_after","type": "float", "required": true, "array": false },
{ "key": "user_id", "type": "string", "size": 64, "required": true, "array": false }
],
"indexes": [
{
"key": "user_bucket_date",
"type": "key",
"attributes": ["user_id", "bucket_id", "date"],
"orders": ["ASC", "ASC", "DESC"]
}
]
}
]
}
],
"functions": []
}