- TypeScript 59%
- HTML 31%
- SCSS 4.6%
- CSS 4%
- JavaScript 1.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| .editorconfig | ||
| .gitignore | ||
| .prettierrc | ||
| angular.json | ||
| eslint.config.js | ||
| ionic.config.json | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
Appwrite Todo
An Angular/Ionic todo app that uses Appwrite Cloud for email/password authentication, password recovery, and per-user todo storage with Appwrite TablesDB.
Tech Stack
- Angular 22 standalone application
- Angular Signal Forms
- Ionic Angular 9
- Appwrite Web SDK 28 with
TablesDB - TypeScript and Angular ESLint
Appwrite Setup
1. Create a Project
- Sign in at https://cloud.appwrite.io.
- Create a new project.
- Note the project endpoint and project ID.
Update src/environments/environment.ts and src/environments/environment.prod.ts if you use a different Appwrite project.
2. Add Web Platforms
In the Appwrite Console, add a Web platform for every host that will run the app:
localhostfor local development- your production hostname for deployed builds
Password recovery redirects back to /password-reset, so the host used for the reset email must be registered as an allowed platform host.
3. Enable Authentication
In Auth > Settings, enable Email/Password authentication. The app uses these account APIs:
- register
- login/logout
- update name/email
- password recovery
4. Create the Database and Table
The app uses fixed IDs in src/app/services/appwrite.service.ts:
- Database ID:
todos-database - Table ID:
todos
Create a database and table with those IDs, or update the service constants if you choose different IDs.
Create these table columns:
| Key | Type | Required | Notes |
|---|---|---|---|
title |
String | Yes | Size 255 |
description |
String | No | Size 1000 |
completed |
Boolean | Yes | Default false |
dueDate |
DateTime | No | Can be empty/null |
Appwrite provides $id, $createdAt, and $updatedAt automatically.
5. Configure Permissions
On the todos table:
- Enable row security.
- Grant All users the Create permission only.
The client adds read, update, and delete permissions to each created row for the signed-in user.
Local Development
Install dependencies:
npm install
Run the dev server:
npm start
Angular serves the app at http://localhost:4200 by default.
Project Scripts
npm start # Run the Angular dev server
npm run build # Create a production build in dist/app
npm run lint # Run Angular ESLint
npm run format # Format the workspace with Prettier
Notes
- The Appwrite SDK currently pulls in
json-bigint, which Angular reports as a CommonJS optimization warning during production builds. npm audit --omit=devreports no production vulnerabilities. Any remaining audit findings are in development tooling.
License
This project is licensed under the MIT License. See LICENSE for details.