Skip to content

Commit 25e1c77

Browse files
committed
docs(do,readme): fix DO app spec; point deploy to develop; polish README layout
Make one-click actually one click: valid App Platform YAML, correct branch target, and cleaner markdown to streamline first-time deploys.
1 parent 998cc3c commit 25e1c77

2 files changed

Lines changed: 97 additions & 88 deletions

File tree

.do/deploy.template.yaml

Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,66 @@
11
spec:
2-
name: anzu
3-
services:
4-
- name: anzu-web
5-
git:
6-
repo_clone_url: https://github.com/tryanzu/anzu.git
7-
branch: main
8-
dockerfile_path: Dockerfile
9-
http_port: 3200
10-
instance_count: 1
11-
instance_size_slug: basic-xxs # Smallest size for testing, user can scale up.
12-
routes:
13-
- path: /
14-
envs:
15-
- key: ENV
16-
value: production
17-
- key: MONGO_URL
18-
value: ${db.DATABASE_URL}
19-
- key: MONGO_NAME
20-
value: ${db.NAME}
21-
- key: REDIS_URL
22-
value: ${cache.INTERNAL_URL}
23-
- key: JWT_SECRET
24-
type: SECRET
25-
value: "CHANGEME" # IMPORTANT: Replace with a long, random string
26-
- key: S3_ENDPOINT
27-
value: "CHANGEME" # e.g., nyc3.digitaloceanspaces.com
28-
- key: S3_ACCESS_KEY_ID
29-
type: SECRET
30-
value: "CHANGEME"
31-
- key: S3_SECRET_ACCESS_KEY
32-
type: SECRET
33-
value: "CHANGEME"
34-
- key: S3_BUCKET_NAME
35-
value: "anzu-assets"
36-
- key: S3_REGION
37-
value: "us-east-1" # Or your bucket's region
38-
- key: OAUTH_GOOGLE_CLIENT_ID
39-
type: SECRET
40-
value: "CHANGEME"
41-
- key: OAUTH_GOOGLE_CLIENT_SECRET
42-
type: SECRET
43-
value: "CHANGEME"
44-
- key: OAUTH_FACEBOOK_CLIENT_ID
45-
type: SECRET
46-
value: "CHANGEME"
47-
- key: OAUTH_FACEBOOK_CLIENT_SECRET
48-
type: SECRET
49-
value: "CHANGEME"
50-
- key: SMTP_HOST
51-
value: "CHANGEME" # e.g., smtp.sendgrid.net
52-
- key: SMTP_PORT
53-
value: "587"
54-
- key: SMTP_USERNAME
55-
type: SECRET
56-
value: "CHANGEME"
57-
- key: SMTP_PASSWORD
58-
type: SECRET
59-
value: "CHANGEME"
60-
- key: SMTP_FROM_EMAIL
61-
value: "CHANGEME" # e.g., no-reply@yourdomain.com
62-
databases:
63-
- name: db
64-
engine: MONGO
65-
- name: cache
66-
engine: REDIS
2+
name: anzu
3+
services:
4+
- name: anzu-web
5+
git:
6+
repo_clone_url: https://github.com/tryanzu/anzu.git
7+
branch: main
8+
dockerfile_path: Dockerfile
9+
http_port: 3200
10+
instance_count: 1
11+
instance_size_slug: basic-xxs # Smallest size for testing, user can scale up.
12+
routes:
13+
- path: /
14+
envs:
15+
- key: ENV
16+
value: production
17+
- key: MONGO_URL
18+
value: ${db.DATABASE_URL}
19+
- key: MONGO_NAME
20+
value: ${db.NAME}
21+
- key: REDIS_URL
22+
value: ${cache.INTERNAL_URL}
23+
- key: JWT_SECRET
24+
type: SECRET
25+
value: "CHANGEME" # IMPORTANT: Replace with a long, random string
26+
- key: S3_ENDPOINT
27+
value: "CHANGEME" # e.g., nyc3.digitaloceanspaces.com
28+
- key: S3_ACCESS_KEY_ID
29+
type: SECRET
30+
value: "CHANGEME"
31+
- key: S3_SECRET_ACCESS_KEY
32+
type: SECRET
33+
value: "CHANGEME"
34+
- key: S3_BUCKET_NAME
35+
value: "anzu-assets"
36+
- key: S3_REGION
37+
value: "us-east-1" # Or your bucket's region
38+
- key: OAUTH_GOOGLE_CLIENT_ID
39+
type: SECRET
40+
value: "CHANGEME"
41+
- key: OAUTH_GOOGLE_CLIENT_SECRET
42+
type: SECRET
43+
value: "CHANGEME"
44+
- key: OAUTH_FACEBOOK_CLIENT_ID
45+
type: SECRET
46+
value: "CHANGEME"
47+
- key: OAUTH_FACEBOOK_CLIENT_SECRET
48+
type: SECRET
49+
value: "CHANGEME"
50+
- key: SMTP_HOST
51+
value: "CHANGEME" # e.g., smtp.sendgrid.net
52+
- key: SMTP_PORT
53+
value: "587"
54+
- key: SMTP_USERNAME
55+
type: SECRET
56+
value: "CHANGEME"
57+
- key: SMTP_PASSWORD
58+
type: SECRET
59+
value: "CHANGEME"
60+
- key: SMTP_FROM_EMAIL
61+
value: "CHANGEME" # e.g., no-reply@yourdomain.com
62+
databases:
63+
- name: db
64+
engine: MONGODB
65+
- name: cache
66+
engine: REDIS

README.md

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
<div align="center">
55
<h1>🏛️ Anzu</h1>
66
<p><strong>Modern, reactive community platform built for the next generation</strong></p>
7-
8-
![Anzu alpha post page screenshot](https://imgur.com/pXDutG0.png)
7+
8+
![Anzu alpha post page screenshot](https://imgur.com/pXDutG0.png)
9+
910
</div>
1011

1112
## ✨ Features
@@ -31,7 +32,7 @@ Whether you're building a gaming community, developer forum, or general discussi
3132

3233
You can deploy Anzu to the DigitalOcean App Platform with a single click.
3334

34-
[![Deploy to DigitalOcean](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/tryanzu/anzu/tree/main)
35+
[![Deploy to DigitalOcean](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/tryanzu/anzu/tree/develop)
3536

3637
After deployment, you will need to configure the environment variables in the DigitalOcean App Platform dashboard. See the [Environment Variables](#-environment-variables) section below for more details.
3738

@@ -139,19 +140,22 @@ We follow the [Conventional Commits](https://www.conventionalcommits.org) specif
139140
Anzu follows a modular, event-driven architecture with clear separation of concerns:
140141

141142
### Core Principles
143+
142144
- **Dependency Injection**: Uses Facebook's inject library for clean DI
143145
- **Event-Driven**: Centralized event handling for cross-module communication
144146
- **Modular Design**: Self-contained modules with clear interfaces
145147
- **Trust Network**: User trust calculation system for content moderation
146148

147149
### Key Modules
150+
148151
- **Board Domain** (`board/`): Posts, comments, votes, and content management
149152
- **User Module** (`modules/user/`): Authentication, profiles, OAuth integration
150153
- **Gaming Module** (`modules/gaming/`): Ranking system and gamification
151154
- **ACL Module** (`modules/acl/`): Role-based access control and permissions
152155
- **API Module** (`modules/api/`): HTTP endpoints and REST API using Gin
153156

154157
### Real-time Features
158+
155159
- WebSocket communication via custom Glue implementation
156160
- Live notifications and real-time discussions
157161
- Event-driven updates across the platform
@@ -161,13 +165,15 @@ Anzu follows a modular, event-driven architecture with clear separation of conce
161165
We welcome contributions from the community! Whether it's reporting bugs, suggesting new features, or submitting code changes, your input is valuable.
162166

163167
### Getting Started
168+
164169
1. Fork the repository and create a new branch for your contribution
165170
2. Make your changes following our coding style and guidelines
166171
3. Write clear commit messages using [Conventional Commits](https://www.conventionalcommits.org)
167172
4. Test your changes thoroughly using the development commands above
168173
5. Submit a pull request with a detailed description
169174

170175
### Development Workflow
176+
171177
- Run `golangci-lint run` before submitting Go code
172178
- Run `npm run eslint` for frontend changes
173179
- Use `go build -o anzu && ./anzu api` for backend development
@@ -178,18 +184,21 @@ We appreciate your help in making Anzu better! If you have questions, feel free
178184
## 📚 Additional Resources
179185

180186
### API & Documentation
187+
181188
- **API Server**: Runs on `http://localhost:3200` by default
182189
- **Admin Panel**: Access via web interface with admin credentials
183190
- **MongoDB Admin**: Mongo Express available at `http://localhost:8081`
184191
- **MinIO Console**: S3 storage admin at `http://localhost:9000`
185192

186193
### Configuration
194+
187195
- **Environment**: Copy `.env.example` to `.env` and customize
188196
- **Database**: MongoDB connection configured via `MONGO_URL`
189197
- **Storage**: S3-compatible storage via MinIO or AWS S3
190198
- **Authentication**: JWT tokens with OAuth support (Google, Facebook)
191199

192200
### Community
201+
193202
- **Issues**: Report bugs and request features on GitHub
194203
- **Discussions**: Join community discussions and get help
195204
- **Wiki**: Additional documentation and guides (coming soon)
@@ -198,26 +207,26 @@ We appreciate your help in making Anzu better! If you have questions, feel free
198207

199208
When deploying to DigitalOcean, you will need to configure the following environment variables in the App Platform dashboard.
200209

201-
| Variable | Type | Required | Description |
202-
| ----------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------- |
203-
| `JWT_SECRET` | `Secret` | Yes | A long, random string used to sign JWT tokens. |
204-
| `S3_ENDPOINT` | `String` | Yes | The endpoint for your S3-compatible storage (e.g., `nyc3.digitaloceanspaces.com`). |
205-
| `S3_ACCESS_KEY_ID` | `Secret` | Yes | The access key for your S3-compatible storage. |
206-
| `S3_SECRET_ACCESS_KEY` | `Secret` | Yes | The secret key for your S3-compatible storage. |
207-
| `S3_BUCKET_NAME` | `String` | Yes | The name of the S3 bucket to use for asset storage. |
208-
| `S3_REGION` | `String` | Yes | The region where your S3 bucket is located. |
209-
| `OAUTH_GOOGLE_CLIENT_ID` | `Secret` | No | The client ID for Google OAuth. |
210-
| `OAUTH_GOOGLE_CLIENT_SECRET` | `Secret` | No | The client secret for Google OAuth. |
211-
| `OAUTH_FACEBOOK_CLIENT_ID` | `Secret` | No | The client ID for Facebook OAuth. |
212-
| `OAUTH_FACEBOOK_CLIENT_SECRET`| `Secret` | No | The client secret for Facebook OAuth. |
213-
| `SMTP_HOST` | `String` | No | The hostname of your SMTP server. |
214-
| `SMTP_PORT` | `String` | No | The port of your SMTP server. |
215-
| `SMTP_USERNAME` | `Secret` | No | The username for your SMTP server. |
216-
| `SMTP_PASSWORD` | `Secret` | No | The password for your SMTP server. |
217-
| `SMTP_FROM_EMAIL` | `String` | No | The email address to send emails from. |
218-
| `NEW_RELIC_KEY` | `Secret` | No | Your New Relic license key for application monitoring. |
219-
| `NEW_RELIC_NAME` | `String` | No | The name of your application in New Relic. |
220-
| `SENTRY_URL` | `Secret` | No | The DSN for Sentry error tracking. |
210+
| Variable | Type | Required | Description |
211+
| ------------------------------ | -------- | -------- | ---------------------------------------------------------------------------------- |
212+
| `JWT_SECRET` | `Secret` | Yes | A long, random string used to sign JWT tokens. |
213+
| `S3_ENDPOINT` | `String` | Yes | The endpoint for your S3-compatible storage (e.g., `nyc3.digitaloceanspaces.com`). |
214+
| `S3_ACCESS_KEY_ID` | `Secret` | Yes | The access key for your S3-compatible storage. |
215+
| `S3_SECRET_ACCESS_KEY` | `Secret` | Yes | The secret key for your S3-compatible storage. |
216+
| `S3_BUCKET_NAME` | `String` | Yes | The name of the S3 bucket to use for asset storage. |
217+
| `S3_REGION` | `String` | Yes | The region where your S3 bucket is located. |
218+
| `OAUTH_GOOGLE_CLIENT_ID` | `Secret` | No | The client ID for Google OAuth. |
219+
| `OAUTH_GOOGLE_CLIENT_SECRET` | `Secret` | No | The client secret for Google OAuth. |
220+
| `OAUTH_FACEBOOK_CLIENT_ID` | `Secret` | No | The client ID for Facebook OAuth. |
221+
| `OAUTH_FACEBOOK_CLIENT_SECRET` | `Secret` | No | The client secret for Facebook OAuth. |
222+
| `SMTP_HOST` | `String` | No | The hostname of your SMTP server. |
223+
| `SMTP_PORT` | `String` | No | The port of your SMTP server. |
224+
| `SMTP_USERNAME` | `Secret` | No | The username for your SMTP server. |
225+
| `SMTP_PASSWORD` | `Secret` | No | The password for your SMTP server. |
226+
| `SMTP_FROM_EMAIL` | `String` | No | The email address to send emails from. |
227+
| `NEW_RELIC_KEY` | `Secret` | No | Your New Relic license key for application monitoring. |
228+
| `NEW_RELIC_NAME` | `String` | No | The name of your application in New Relic. |
229+
| `SENTRY_URL` | `Secret` | No | The DSN for Sentry error tracking. |
221230

222231
---
223232

0 commit comments

Comments
 (0)