Simple, clean, and efficient meeting scheduling app.
├── 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
- Clone this repository locally
- Navigate to the root directory and install the dependencies.
cd ZotMeet
pnpm install
- Start the development server
pnpm dev
(runpnpm dev --host
if you want to access the server from other devices on your network)
- The app should be viewable at
localhost:3000
by default. Changes to the code will automatically update the page. If you ranpnpm dev --host
, you can access the app from other devices on your network athost-ip:3000
.
- Go to the Postgres official website and download the database for your specific OS. (Here is more information, if you get stuck)
- While running the setup, ensure that pgAdmin is downloaded alongside Postgres itself
- Once connected to the Postgres Server, Right click on databases -> create -> database, and name it
zotmeet
. - In the ZotMeet project root directory,
pnpm db:generate
will generate any updated database migrations. - Create a .env file, and set
DATABASE_URL=postgres://yourusername:yourpassword@localhost:5432/zotmeet
- Run
pnpm db:migrate
to apply all the migration changes to your local database.
- 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.
If you need credentials for the .env
file, contact the project lead (Sean).
After changes to the .env file, run pnpm run check
to update SvelteKit's auto-generated environment variable types.
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 {
int id PK
string displayName
}
availability {
string memberId FK
uuid meetingId FK
json meetingAvailabilities
enum status
}
meeting {
uuid id PK
string title
string description
string location
json dates
boolean scheduled
char fromTime
char toTime
uuid groupId FK
int hostId FK
}
sessions {
string id PK
timestamp expiresAt
string userId FK
}
meeting ||--o{ availability : has
users ||--o{ usersInGroup : has
groups ||--o{ usersInGroup : contains
members ||--o| users : extends
members ||--o{ availability : provides
users ||--o{ sessions : has