# Architecting Database Schema

> Defines schema, attributes, indexes, and enums for Tourly collections. Use when setting up the database in Appwrite.

- Skill: `diegosouzapw/architecting-database-schema` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/architecting-database-schema`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/architecting-database-schema/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/architecting-database-schema

---


# Database Schema Architecture

## When to use this skill
- When creating new collections in the Appwrite Console.
- When defining TypeScript interfaces for database documents.

## Schema Definition
### Users (Private Data)
- `userId` (string, required)
- `name` (string)
- `email` (string, required)
- `role` (enum: user, admin)

### Tours
- `title` (string, required)
- `description` (markdown/text)
- `location` (string, required)
- `price` (float, required)
- `images` (string array, storage IDs)
- `rating` (float)
- `availableDates` (datetime array)

### Bookings
- `userId` (string, required)
- `tourId` (string, required)
- `status` (enum: pending, confirmed, cancelled)
- `totalPrice` (float)

## Instructions
- **Indexes**: Add indexes for searchable fields like `location` and `price`.
- **Permissions**: Ensure "Users" can only read their own bookings.

