You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [1.1.0] - 2025-11-26
9
+
10
+
### Added
11
+
12
+
- Major change since the app now moves to a `docker-compose.yaml` setup fundamentally changing how to write content in it. `README.md` will have more context but you can now mount directories for content (`pieces` and `pages`) while using the public image to constantly rebuild the site on push or update. You are free to set this up yourself. `config.yaml`, `intro.md`, and `favicon.ico` can also be mounted.
-**Fully customizable**: All UI labels, site metadata, and page order configurable via `config.yaml`
65
70
-**No tracking, no analytics, no boxes, no search, no media**: Just writing and reading
66
71
67
-
## Tech Stack
68
-
69
-
-**React 19** with React Router for client-side navigation
70
-
-**Vite** for blazing fast development and optimized builds
71
-
-**SCSS** for styling with a clean, minimal design
72
-
-**TypeScript** build scripts for content indexing and generation
73
-
-**ReactMarkdown** for rendering markdown content
74
-
-**Front Matter** for parsing markdown metadata
75
-
76
72
## Getting Started
77
73
78
-
### Deployment Gotchas!
79
-
80
-
Once you have your Fork or branch ready, you can deploy the app but the reader position Permalinks as well as the Body of Work links will fail. This is due to SPA handling of paths and (from my understanding) how React works. But this can be fixed.
81
-
82
-
#### Easy Mode: Deploy to Vercel
74
+
### Docker Compose (Recommended)
83
75
84
-
You can directly to Vercel below. `vercel.json` already has the fixes Vercel will need.
76
+
If you want to self-host, use the public Docker image. Create a directory with your content:
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDeepanshKhurana%2Fode)
89
-
90
-
#### Pro Mode: nginx Configuration
91
-
92
-
If you are like me, you probably have your own server where you will need to handle SPA routing. If you are using nginx, a template is already provided.
If you are coming from WordPress, you can use the awesome [lonekorean/wordpress-export-to-markdown](https://github.com/lonekorean/wordpress-export-to-markdown) to get your content in markdown format. It will mostly be plug and play with this version of Ode.
89
+
Create a `docker-compose.yml`:
90
+
91
+
```yaml
92
+
services:
93
+
ode:
94
+
image: ghcr.io/deepanshkhurana/ode:latest
95
+
ports:
96
+
- "8080:4173"
97
+
restart: unless-stopped
98
+
volumes:
99
+
- ./public:/app/public:ro
100
+
```
99
101
100
-
### Installation
102
+
Run:
101
103
102
104
```bash
103
-
npm install
105
+
docker compose up -d
104
106
```
105
107
106
-
### Development
108
+
Your site will be available at `http://localhost:8080`. Restart the container to rebuild after content changes:
107
109
108
110
```bash
109
-
npm run dev
111
+
docker compose restart
110
112
```
111
113
112
-
Runs the app in development mode at `http://localhost:5173`
114
+
### Other Deployment Options
113
115
114
-
### Building
116
+
**Note:** In this case, you need to replace the content in `public/` with your own.
115
117
116
-
```bash
117
-
npm run build
118
-
```
118
+
Once you have your Fork or branch ready, you can deploy the app but the reader position Permalinks as well as the Body of Work links will fail. This is due to SPA handling of paths and (from my understanding) how React works. But this can be fixed.
119
119
120
-
This will:
121
-
1. Index all pieces from `public/content/pieces/`
122
-
2. Index all pages from `public/content/pages/`
123
-
3. Paginate pieces for reader mode
124
-
4. Calculate word/piece statistics
125
-
5. Generate RSS feed
126
-
6. Generate body of work archive
127
-
7. Build the production bundle
120
+
#### Deploy to Vercel
128
121
129
-
### Preview Production Build
122
+
You can directly to Vercel below. `vercel.json` already has the fixes Vercel will need.
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FDeepanshKhurana%2Fode)
136
127
137
-
Edit `public/config.yaml` to customize your site. You can handle quite a few things here:
128
+
#### nginx Configuration
138
129
139
-
- Change your site’s name, author, and vibe at the top.
140
-
- Tweak button text and messages to sound how you want.
141
-
- Pick which pages show up first in the menu.
142
-
- Hide any pages or pieces you don’t want public.
143
-
- Set how collections are sorted—oldest first or newest first.
144
-
- Rename the light/dark mode switches.
145
-
- Edit the “words wasted” summary to your liking.
130
+
If you are like me, you probably have your own server where you will need to handle SPA routing. If you are using nginx, a template is already provided.
If you are coming from WordPress, you can use the awesome [lonekorean/wordpress-export-to-markdown](https://github.com/lonekorean/wordpress-export-to-markdown) to get your content in markdown format. It will mostly be plug and play with this version of Ode.
148
137
149
138
## Writing Content
150
139
@@ -179,7 +168,58 @@ date: 2021-06-14
179
168
Tell everyone everything!
180
169
```
181
170
182
-
## Build Scripts
171
+
## Configuration
172
+
173
+
Edit `public/config.yaml` to customize your site. You can handle quite a few things here:
174
+
175
+
- Change your site's name, author, and vibe at the top.
176
+
- Tweak button text and messages to sound how you want.
177
+
- Pick which pages show up first in the menu.
178
+
- Hide any pages or pieces you don't want public.
179
+
- Set how collections are sorted—oldest first or newest first.
0 commit comments