Skip to content

Commit d927561

Browse files
committed
Update docs
[skip ci]
1 parent 9145bae commit d927561

File tree

3 files changed

+95
-3
lines changed

3 files changed

+95
-3
lines changed

README.md

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ This started as a fork of [pagoda](https://github.com/mikestefanello/pagoda), fo
2222
<p align="center"><img alt="Logo" src="https://user-images.githubusercontent.com/552328/147838644-0efac538-a97e-4a46-86a0-41e3abdf9f20.png" height="100px"/></p>
2323

2424

25+
### Getting Started
26+
2527
To get up and running with GoShip:
2628
```bash
2729
# The below command will:
@@ -36,4 +38,94 @@ make init
3638
make watch
3739
```
3840

39-
For in-depth info on the architecture of the project, please see the [mikestefanello/pagoda](https://github.com/mikestefanello/pagoda) repo. There are some key differences, but since this was originally a fork, 99% of it still applies. I am working on creating clear and actionable documentation, but that is quite time-consuming, so don't hold your socks.
41+
For in-depth info on the architecture of the project, please see the [mikestefanello/pagoda](https://github.com/mikestefanello/pagoda) repo. There are some key differences, but since this was originally a fork, 99% of it still applies. I am working on creating clear and actionable documentation, but that is quite time-consuming, so don't hold your socks.
42+
43+
### Motivation
44+
45+
Build the same rich interfaces you would build with Javascript frameworks, but with HTML and Go. Limit the number of tools you use. Develop rapidly.
46+
47+
#### Why the Hell Do We Need Another Boilerplate?
48+
49+
Well, I noticed that there were none for Go. Now, I know most Go folks like to build it all themselves. And while I love doing that myself, I have many project ideas for which I just want to build that specific project, not the entire infra surrounding it, like auth, notifications, payments, file uploads etc. This project has served me well in bringing to production many projects so far. It has evolved far beyond what I originally planned for, though there is still so much potentional to expand on and implement for.
50+
51+
If you'd like a no-nonesense (or not too much?) starter kit to get your next project to production ASAP, while also using awesome technologies like Go, you've found a suitable starting point!
52+
53+
> **Warning alert!** this project is in active development as I am adding things after first trying them out in prod for [Chérie](https://cherie.chatbond.app/), a relationship app to grow your couple. Note that I would welcome any help to develop this boilerplate ❤️.
54+
55+
### Features
56+
57+
#### 🌩 Realtime
58+
- Support for HTMX SSE extension
59+
- Can be used with vanilla JS
60+
61+
#### 📬 Email Sending
62+
- Support for SMTP and Resend API
63+
- Pre-made templates for account activation, password reset, and newsletter.
64+
65+
#### 💸 Payments
66+
- Stripe integration for monthly subscriptions
67+
- Internal subscription management
68+
69+
#### 🏗 Background Tasks
70+
- Offload heavy tasks to background
71+
- Realtime or scheduled
72+
73+
#### 🔔 Notifications
74+
- Real-time or scheduled
75+
- Supports push notifications to PWA, native iOS, and native Android
76+
77+
#### 🔐 Auth Done For You
78+
- Email/Password logins
79+
- Ready-made private user area
80+
81+
#### 📂 File Uploads with AWS APIs
82+
- Internal management of uploaded files
83+
- Host files and images on any S3 compatible service (e.g. Backblaze)
84+
- Pre-signed URLs!
85+
86+
#### 📱 Mobile Ready App
87+
- Fully PWA-ready with internal FCM and push subscriptions management
88+
- IOS native wrapper with push notifications and payments
89+
- Pre-signed URLs!
90+
- Styled with mobile/tablet/desktop in mind
91+
92+
#### 💅 Components and Styles
93+
- Light + Dark mode
94+
- Many components available (HTMX, AlpineJS, Hyperscript)
95+
- 20+ themes with DaisyUI
96+
97+
#### 🪂 Drop-in any JS App
98+
- Designed for island architecture. Drop in any JS app and take advantage of already built infra
99+
- Currently has SvelteJS and VanillaJS build step and static file serving
100+
101+
#### 🛢 AI-ready Database Layer
102+
- Postgres support (i.e. Supabase, Neon etc)
103+
- Vector-ready (PGVector integrated) for your AI/ML applications!
104+
105+
#### 🧪 Go Tests and E2E Tests with Playwright
106+
- Go tests with automatic setup/teardown of DB container
107+
- Playwright integration tests to make sure you don't break your previously working UIs!
108+
109+
#### 🚀 Deploy Anywhere. Easily.
110+
- Deploy from bare metal to Cloud VMs with Kamal
111+
- Single-command deploy after quick setup
112+
113+
### Tech Stack
114+
115+
#### Backend
116+
- **[Echo](https://echo.labstack.com/)** - High-performance, extensible, minimalist Go web framework.
117+
- **[Ent](https://entgo.io/)** - Simple yet powerful ORM for modeling and querying data.
118+
- **[Asynq](https://github.com/hibiken/asynq)** - Simple, reliable, and efficient distributed task queue in Go.
119+
- **[Stripe](https://stripe.com/)** - Payments solution.
120+
121+
#### Frontend
122+
- **[HTMX](https://htmx.org/)** - Build modern user interfaces with minimal JavaScript.
123+
- **[Templ](https://templ.build/)** - A powerful type-safe Go templating language.
124+
- **[Tailwind CSS](https://tailwindcss.com/)** - A utility-first CSS framework for rapid implementation.
125+
- **[Hyperscript](https://hyperscript.org/)** - A lightweight JavaScript framework to sprinkle localized logic and state.
126+
#### Storage
127+
- **Postgres** - Host your DB on Supabase or any other hosting platform compatible with Postgres.
128+
- Currently making optional, with **SQLite** as replacement for single binary deployments
129+
- **[S3](https://aws.amazon.com/s3/)** - Host files and images on any S3-compatible service (e.g., Backblaze).
130+
- **Redis** - used for task queuing, caching, and SSE events.
131+
- Currently making optional for single binary deployments

templates/pages/documentation.templ

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ templ GoshipFeatures() {
9393
@singleOpenAccordionEntry("Styles", "💅 Components and Styles", stylesContent())
9494
@singleOpenAccordionEntry("DropJSApp", "🪂 Drop-in any JS App", jsIslandsContent())
9595
@singleOpenAccordionEntry("DB", "🛢 AI-ready Database Layer", databaseContent())
96-
@singleOpenAccordionEntry("DB", "🧪Go Tests and E2E Tests with Playwright", testingContent())
96+
@singleOpenAccordionEntry("e2eTests", "🧪 Go Tests and E2E Tests with Playwright", testingContent())
9797
@singleOpenAccordionEntry("Deploy", "🚀 Deploy Anywhere. Easily.", deployContent())
9898
// @singleOpenAccordionEntry("Authorization", "👮 Authorization", accordionNotificationsContent())
9999
}

templates/pages/documentation_templ.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)