ZotMeet
Coordinating meetings and so much more
Install / Use
/learn @icssc/ZotMeetREADME
About
Simple, clean, and efficient meeting scheduling app.
Tech Stack
Contributing
Project Structure
├── README.md
├── drizzle.config.ts
├── next.config.mjs
├── node_modules
├── package.json
├── src
│ ├── app
│ │ └── [ all front-end routes ]
│ ├── components
│ │ └── [ front-end components ]
│ ├── db
│ │ ├── index.ts
│ │ ├── migrations
│ │ └── schema.ts
│ ├── lib
│ └── server
│ ├── actions ( mutate or insert data )
│ │ └── [ entity ]
│ │ └── [ verb ]
│ │ └── action.ts
│ └── data ( query data )
│ └── [ entity ]
│ └── queries.ts
└── tsconfig.json
Local Development
Prerequisites
- Git
- Node.js
- pnpm
- Just run
npm i -g pnpmto install.
- Just run
- Docker Desktop
Local Setup
- Clone this repository locally
- Navigate to the root directory and install the dependencies.
cd ZotMeetpnpm install
- Copy the example environment file:
cp .env.example .env - Make sure Docker Desktop is running, then set up the database:
pnpm db:setup - Start the development server
pnpm dev(runpnpm dev --hostif you want to access the server from other devices on your network)
- The app should be viewable at
localhost:3000by default.
Database Commands
| Command | Description |
|---------|-------------|
| pnpm db:setup | Start database and run migrations (first time setup) |
| pnpm db:start | Start the PostgreSQL container |
| pnpm db:stop | Stop the PostgreSQL container (data persists) |
| pnpm db:reset | Reset database - removes all data and re-runs migrations |
| pnpm db:generate | Generate new migrations from schema changes |
| pnpm db:migrate | Apply pending migrations |
| pnpm db:studio | Open Drizzle Studio to browse your database |
Committing Changes
- Follow the Conventional Commits specification when writing commit messages.
- E.g.,
git commit -m "feat: add this feature";git commit -m "fix: fix this bug".
- E.g.,
- Keep commits and PRs atomic.
- A PR should be a single feature or bug fix.
- A commit should be a single logical change.
Environment Variables
If you need credentials for the .env file, contact the project lead (Kyle).
After changes to the .env file, run pnpm run check to update SvelteKit's auto-generated environment variable types.
Database Schema
erDiagram
users {
string id PK, FK
string email
string passwordHash
timestamp createdAt
}
groups {
uuid id PK
string name
string description
timestamp createdAt
string createdBy FK
}
usersInGroup {
string userId FK
uuid groupId FK
}
members {
uuid id PK
string displayName
}
availability {
uuid memberId FK
uuid meetingId FK
json meetingAvailabilities
enum status
}
meeting {
uuid id PK
string title
string description
string location
json dates
string meetingType
boolean scheduled
time fromTime
time toTime
string timezone
uuid groupId FK
uuid hostId FK
timestamp createdAt
}
sessions {
string id PK
timestamp expiresAt
string userId FK
string googleAccessToken
string googleRefreshToken
timestamp googleAccessTokenExpiresAt
}
oauth_accounts {
string userId FK
string providerId PK
string providerUserId PK
}
meeting ||--o{ availability : has
users ||--o{ usersInGroup : has
groups ||--o{ usersInGroup : contains
members ||--o| users : extends
members ||--o{ availability : provides
users ||--o{ sessions : has
users ||--o{ oauth_accounts : has
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
