Skip to content

Commit 20d65c8

Browse files
committed
docs: new various services and enhance existing content
1 parent e07c48e commit 20d65c8

14 files changed

+251
-67
lines changed

README.md

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@
3838
- [ ] Lightweight Animation
3939
- [ ] Command Palette/Bar
4040
- [ ] Keyboard Shortcuts
41-
- [x] AI Workflow Rules
4241
- [x] Web Analytics
42+
- [x] AI Workflow Rules
43+
- [ ] AI Integration
4344
- [x] SEO (Search Engine Optimization) and Meta Tags
4445
- [x] SSR (Server-Side Rendering)
4546
- [x] Type-Safe CRUD (Create, Read, Update, Delete)
@@ -57,7 +58,6 @@
5758
- [ ] Pagination on Client and Server
5859
- [x] Email Templates, Notification, Marketing, Verification
5960
- [x] Payment Gateway Integration with Billing, Subscription, Invoice
60-
- [ ] Webhooks
6161
- [ ] Blog, Release Notes
6262
- [ ] Scheduled/Cron Jobs
6363
- [ ] Background Jobs/Workers
@@ -66,28 +66,21 @@
6666
- [ ] Internationalization (i18n) and Localization (l10n)
6767
- [ ] Accessibility (a11y)
6868
- [ ] Code Generator/Scaffolder
69-
- [ ] AI Integration
69+
- [ ] Webhooks
7070
- [ ] Community
7171

7272
## Tech Stack
7373

74-
- [Goal](#goal)
75-
- [Benefits](#benefits)
76-
- [Features](#features)
77-
- [Tech Stack](#tech-stack)
78-
- [Guides](#guides)
79-
- [Inspirations](#inspirations)
80-
- [Credits](#credits)
81-
82-
### Core
74+
### Core Stack
8375

8476
Things that are the primary default.
8577

86-
- General: TypeScript, Bun
78+
- General: TypeScript, Bun, Docker
8779
- Frontend: React, Tailwind CSS
88-
- Backend: ORM, SQL Database, Docker
80+
- Backend: Hono, tRPC
81+
- Database: SQL, ORM
8982

90-
### Default
83+
### Default Stack
9184

9285
1. Language: [TypeScript](docs/typescript.md) + [JavaScript](docs/javascript.md) + [HTML](docs/html.md) + [CSS](docs/css.md)
9386
2. Runtime & Package Manager: [Bun](docs/bun.md)
@@ -107,13 +100,22 @@ Things that are the primary default.
107100
16. Testing: [Vitest](docs/vitest.md) + [Testing Library](docs/testing-library.md) + [Playwright](docs/playwright.md) + [Storybook](docs/storybook.md) + [MSW](docs/msw.md)
108101
17. Payment: [Polar](docs/polar.md) + [Xendit](docs/xendit.md)
109102

110-
Deployment:
103+
### Development Tools
104+
105+
1. Code Editor: [VS Code](docs/vscode.md) / [NeoVim](docs/neovim.md)
106+
2. AI Model: [ChatGPT](docs/chatgpt.md) / [Claude](docs/claude.md) / [Perplexity](docs/perplexity.md) / [Galileo AI](docs/galileo-ai.md)
107+
3. AI Code Editor: [GitHub Copilot](docs/github-copilot.md) / [Cursor AI](docs/cursor.md) / [Codeium](docs/codeium.md) / [Supermaven](docs/supermaven.md) / [Tabnine](docs/tabnine.md)
108+
4. AI Code Generator: [v0.dev](docs/v0.md) / [Marblism](docs/marblism.md)
109+
5. AI Docs: [Context7](docs/context7.md)
110+
111+
### Deployment Platforms
111112

112-
1. Frontend: [Vercel](docs/vercel.md)
113-
2. Backend: [Render](docs/render.md)
114-
3. Database: [Neon](docs/neon.md)
113+
1. General: [Render](docs/render.md) / [Railway](docs/railway.md) / [Fly.io](docs/flyio.md) / [Cloudflare Workers](docs/cloudflare-workers.md)
114+
2. Frontend: [Vercel](docs/vercel.md) / [Netlify](docs/netlify.md) / [Cloudflare Pages](docs/cloudflare-pages.md)
115+
3. Database: [Neon](docs/neon.md) / [Supabase](docs/supabase.md)
116+
4. Storage: [Cloudflare R2](docs/cloudflare-r2.md) / [Amazon S3](docs/amazon-s3.md)
115117

116-
### Optional: Manual Deployment
118+
### Alternative: Manual Deployment
117119

118120
1. OS: [Debian](docs/debian.md) / [Ubuntu](docs/ubuntu.md)
119121
2. Web Server and Proxy: [Caddy](docs/caddy.md) / [Nginx](docs/nginx.md)
@@ -124,7 +126,7 @@ Deployment:
124126
7. VPS: [IONOS](docs/ionos.md) / [Linode](docs/linode.md) / [DigitalOcean](docs/digitalocean.md) / [Amazon Lightsail](docs/amazon-lightsail.md)
125127
8. Bare Metal: [Hetzner](docs/hetzner.md) / [Vultr](docs/vultr.md) / [Scaleway](docs/scaleway.md)
126128

127-
### Alternative: Frameworks
129+
### Alternative: Web Frameworks
128130

129131
1. Frontend Framework: [Remix](docs/remix.md) / [Next.js](docs/nextjs.md)
130132
2. Frontend Library Only: [Svelte](docs/svelte.md) / [Vue.js](docs/vuejs.md) / [Angular](docs/angular.md) / [SolidJS](docs/solidjs.md) / [Qwik](docs/qwik.md)
@@ -173,40 +175,38 @@ Deployment:
173175
4. Service Monitoring: [OpenStatus](docs/openstatus.md) / [BetterStack](docs/betterstack.md)
174176
5. Secrets and Environment Variables: [Infisical](docs/infisical.md) / [Doppler](docs/doppler.md)
175177
6. File Storage/Upload: [Uploadcare](docs/uploadcare.md) / [Cloudinary](docs/cloudinary.md)
176-
7. Email Transactional: [Nodemailer](docs/nodemailer.md) / [Plunk](docs/plunk.md) / [Resend](docs/resend.md) / [Amazon SES](docs/amazon-ses.md)
177-
8. Email Marketing/Newsletter: [Loops.so](docs/loops.md) / [Beehiiv](docs/beehiiv.md) / [Bento](docs/bento.md)
178-
9. APM, Observability, Error Tracking: [Sentry](docs/sentry.md) + [OpenTelemetry](docs/opentelemetry.md)
179-
10. Auth: [WorkOS](docs/workos.md) / [Clerk](docs/clerk.md)
180-
11. Business Intelligence (BI): [Metabase](docs/metabase.md) / [Index.app](docs/index-app.md)
181-
12. Webhook: [Svix](docs/svix.md)
182-
13. Background Jobs: [Quirrel.dev](docs/quirrel-dev.md) / [Trigger.dev](docs/trigger-dev.md)
183-
14. Link/URL Shortener/Management: [Dub.co](docs/dub-co.md)
184-
15. Full-Text Search: [Meilisearch](docs/meilisearch.md)
185-
16. Notification: [Novu](docs/novu.md)
186-
17. Documentation: [Mintlify](docs/mintlify.md)
187-
18. Automation: [n8n](docs/n8n.md)
188-
19. API Key Management: [Unkey](docs/unkey.md)
189-
190-
### Alternative: Tools
178+
7. Avatar: [DiceBear](docs/dicebear.md) / [Gravatar](docs/gravatar.md)
179+
8. Email Transactional: [Nodemailer](docs/nodemailer.md) / [Plunk](docs/plunk.md) / [Resend](docs/resend.md) / [Amazon SES](docs/amazon-ses.md)
180+
9. Email Marketing/Newsletter: [Loops.so](docs/loops.md) / [Beehiiv](docs/beehiiv.md) / [Bento](docs/bento.md)
181+
10. Email Tool: [VerifyRight](docs/verifyright.md)
182+
11. APM, Observability, Error Tracking: [Sentry](docs/sentry.md) + [OpenTelemetry](docs/opentelemetry.md)
183+
12. Auth: [WorkOS](docs/workos.md) / [Clerk](docs/clerk.md)
184+
13. Business Intelligence (BI): [Metabase](docs/metabase.md) / [Index.app](docs/index-app.md)
185+
14. Webhook: [Svix](docs/svix.md)
186+
15. Background Jobs: [Quirrel.dev](docs/quirrel-dev.md) / [Trigger.dev](docs/trigger-dev.md)
187+
16. Link/URL Shortener/Management: [Dub.co](docs/dub-co.md)
188+
17. Full-Text Search: [Meilisearch](docs/meilisearch.md)
189+
18. Notification: [Novu](docs/novu.md)
190+
19. Documentation: [Mintlify](docs/mintlify.md)
191+
20. Automation: [n8n](docs/n8n.md)
192+
21. API Key Management: [Unkey](docs/unkey.md)
193+
194+
### Alternative: Communication Tools
191195

192196
1. Email: [Gmail](docs/gmail.md) / [Zero Email](docs/zero-email.md) / [HEY](docs/hey.md) / [ProtonMail](docs/protonmail.md)
193197
2. Credentials: [Bitwarden](docs/bitwarden.md) / [Passbolt](docs/passbolt.md) / [LastPass](docs/lastpass.md) / [1Password](docs/1password.md)
194198
3. Dotfiles: [Chezmoi](docs/chezmoi.md) / [Dotbot](docs/dotbot.md)
195-
4. Code Editor: [VS Code](docs/vscode.md) / [NeoVim](docs/neovim.md)
196-
5. AI Tool: [ChatGPT](docs/chatgpt.md) / [Claude](docs/claude.md) / [Perplexity](docs/perplexity.md) / [Galileo AI](docs/galileo-ai.md)
197-
6. AI Code Editor: [GitHub Copilot](docs/github-copilot.md) / [Cursor AI](docs/cursor.md) / [Codeium](docs/codeium.md) / [Supermaven](docs/supermaven.md) / [Tabnine](docs/tabnine.md)
198-
7. AI Code Generator: [v0.dev](docs/v0.md) / [Marblism](docs/marblism.md)
199-
8. UI/UX Design: [Figma](docs/figma.md)
200-
9. Communication & Community: [Telegram](docs/telegram.md) / [Discord](docs/discord.md) / [X (Twitter)](docs/x.md)
201-
10. CRM: [Attio](docs/attio.md)
202-
11. Business Database & MVP Builder: [Airtable](docs/airtable.md) / [Baserow](docs/baserow.md) / [NocoDB](docs/nocodb.md)
203-
12. Product/Project Management: [Linear](docs/linear.md) / [Plane.so](docs/plane.md) / [Eververse.ai](docs/eververse-ai.md) / [Basecamp](docs/basecamp.md)
204-
13. Docs: [Outline](docs/outline.md) / [Notion](docs/notion.md)
205-
14. Social Media Management: [Buffer](docs/buffer.md) / [Mixpost](docs/mixpost.md) / [Postiz](docs/postiz.md)
206-
15. Blog: [Hashnode](docs/hashnode.md) / [Ghost](docs/ghost.md)
207-
16. Document: [DocuSeal](docs/docuseal.md) / [Papermark](docs/papermark.md)
208-
17. Launcher: [Raycast](docs/raycast.md)
209-
18. Accounting: [Bigcapital](docs/bigcapital.md)
199+
4. UI/UX Design: [Figma](docs/figma.md)
200+
5. Communication & Community: [Telegram](docs/telegram.md) / [Discord](docs/discord.md) / [X (Twitter)](docs/x.md)
201+
6. CRM: [Attio](docs/attio.md)
202+
7. Business Database & MVP Builder: [Airtable](docs/airtable.md) / [Baserow](docs/baserow.md) / [NocoDB](docs/nocodb.md)
203+
8. Product/Project Management: [Linear](docs/linear.md) / [Plane.so](docs/plane.md) / [Eververse.ai](docs/eververse-ai.md) / [Basecamp](docs/basecamp.md)
204+
9. Docs: [Outline](docs/outline.md) / [Notion](docs/notion.md)
205+
10. Social Media Management: [Buffer](docs/buffer.md) / [Mixpost](docs/mixpost.md) / [Postiz](docs/postiz.md)
206+
11. Blog: [Hashnode](docs/hashnode.md) / [Ghost](docs/ghost.md)
207+
12. Document: [DocuSeal](docs/docuseal.md) / [Papermark](docs/papermark.md)
208+
13. Launcher: [Raycast](docs/raycast.md)
209+
14. Accounting: [Bigcapital](docs/bigcapital.md)
210210

211211
## Guides
212212

docs/amazon-s3.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Amazon S3

docs/cloudflare-pages.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Cloudflare Pages

docs/cloudflare-r2.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Cloudflare R2

docs/conform.md

Lines changed: 121 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,126 @@
11
# Conform
22

3-
Conform is a type-safe form validation library utilizing web fundamentals to progressively enhance HTML Forms with full support for server frameworks like Remix and Next.js.
4-
5-
Created by Edmund Hung.
3+
Conform, created by Edmund Hung, is a type-safe form validation library utilizing web fundamentals to progressively enhance HTML Forms with full support for server frameworks like Remix, React Router, Next.js.
64

75
Links:
86

9-
- [Conform](https://conform.guide)
7+
- [Conform.guide](https://conform.guide)
8+
- [`edmundhung/conform/examples/shadcn-ui`](https://github.com/edmundhung/conform/tree/main/examples/shadcn-ui): shadcn UI Integration
9+
10+
## Example: Remix
11+
12+
Here is a login form example integrating with [Remix](https://remix.run).
13+
14+
```tsx
15+
import { getFormProps, getInputProps, useForm } from "@conform-to/react";
16+
import { parseWithZod } from "@conform-to/zod";
17+
import type { ActionArgs } from "@remix-run/node";
18+
import { json, redirect } from "@remix-run/node";
19+
import { Form, useActionData } from "@remix-run/react";
20+
import { z } from "zod";
21+
22+
const schema = z.object({
23+
email: z.string().email(),
24+
password: z.string(),
25+
remember: z.boolean().optional(),
26+
});
27+
28+
export async function action({ request }: ActionArgs) {
29+
const formData = await request.formData();
30+
const submission = parseWithZod(formData, { schema });
31+
32+
if (submission.status !== "success") {
33+
return json(submission.reply());
34+
}
35+
36+
// ...
37+
}
38+
39+
export default function Login() {
40+
// Last submission returned by the server
41+
const lastResult = useActionData<typeof action>();
42+
const [form, fields] = useForm({
43+
// Sync the result of last submission
44+
lastResult,
45+
46+
// Reuse the validation logic on the client
47+
onValidate({ formData }) {
48+
return parseWithZod(formData, { schema });
49+
},
50+
51+
// Validate the form on blur event triggered
52+
shouldValidate: "onBlur",
53+
shouldRevalidate: "onInput",
54+
});
55+
56+
return (
57+
<Form method="post" id={form.id} onSubmit={form.onSubmit} noValidate>
58+
<div>
59+
<label>Email</label>
60+
<input
61+
type="email"
62+
key={fields.email.key}
63+
name={fields.email.name}
64+
defaultValue={fields.email.initialValue}
65+
/>
66+
<div>{fields.email.errors}</div>
67+
</div>
68+
69+
<div>
70+
<label>Password</label>
71+
<input
72+
type="password"
73+
key={fields.password.key}
74+
name={fields.password.name}
75+
defaultValue={fields.password.initialValue}
76+
/>
77+
<div>{fields.password.errors}</div>
78+
</div>
79+
80+
<label>
81+
<div>
82+
<span>Remember me</span>
83+
<input
84+
type="checkbox"
85+
key={fields.remember.key}
86+
name={fields.remember.name}
87+
defaultChecked={fields.remember.initialValue === "on"}
88+
/>
89+
</div>
90+
</label>
91+
92+
<hr />
93+
94+
<button type="submit">Login</button>
95+
</Form>
96+
);
97+
}
98+
```
99+
100+
### Tips
101+
102+
The default value might be out of sync if you reset the form from the action.
103+
104+
If the default value of the form comes from the loader and you are trying to reset the form on the action, there is a chance you will see the form reset to the previous default value. As Conform will reset the form the moment action data is updated while Remix is still revalidating the loader data. To fix this, you can wait for the state to be `idle` (e.g. `navigation.state` or `fetcher.state`) before passing the `lastResult` to Conform like this:
105+
106+
```tsx
107+
export default function Example() {
108+
const { defaultValue } = useLoaderData<typeof loader>();
109+
const lastResult = useActionData<typeof action>();
110+
const navigation = useNavigation();
111+
const [form, fields] = useForm({
112+
// If the default value comes from loader
113+
defaultValue,
114+
115+
// Sync the result of last submission only when the state is idle
116+
lastResult: navigation.state === "idle" ? lastResult : null,
117+
118+
// or, if you are using a fetcher:
119+
// lastResult: fetcher.state === 'idle' ? lastResult : null,
120+
121+
// ...
122+
});
123+
124+
// ...
125+
}
126+
```

docs/context7.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Context7
2+
3+
Up-to-date documentation for LLMs and AI code editors.
4+
5+
Copy the latest docs and code for any library — paste into Cursor, Claude, or other LLMs.
6+
7+
Links:
8+
9+
- [Context7 - Up-to-date documentation for LLMs and AI code editors](https://context7.com)
10+
- [Introducing Context7: Up-to-Date Docs for LLMs and AI Code Editors - Upstash Blog](https://upstash.com/blog/context7-llmtxt-cursor)
11+
- [Getting Started](https://github.com/upstash/context7?tab=readme-ov-file#%EF%B8%8F-getting-started)

docs/cursor.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,8 @@ The AI Code Editor. Built to make you extraordinarily productive, Cursor is the
55
Links:
66

77
- [Cursor](https://cursor.com)
8+
9+
Docs:
10+
11+
- [Cursor Docs](https://docs.cursor.com)
12+
- [Model Context Protocol - Cursor Docs](https://docs.cursor.com/context/model-context-protocol)

docs/dicebear.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# DiceBear

docs/flyio.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Fly.io

docs/gravatar.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Gravatar

0 commit comments

Comments
 (0)