Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
b29e3da
Created draft of messaging-first-architecture
gayatri-potawad Jun 24, 2025
89cc4c8
Update messaging-first-architecture.md
gayatri-potawad Jun 24, 2025
1d84b2c
Updated cover image for messaging-first-architecture.md
gayatri-potawad Jun 24, 2025
84123b9
Addresses messaging-first-architecture.md
gayatri-potawad Jun 26, 2025
9fab6a7
Removed date metadata in messaging-first-architecture.md
gayatri-potawad Mar 9, 2026
9c670b7
removed for restructuring
Mar 9, 2026
d5e8bb3
feat: add self hosted blog
Cybertron1 Jun 16, 2025
12af655
feat: move published articles
Cybertron1 Jun 17, 2025
4643eaa
feat: add cf wrangler json
Cybertron01Z Jun 17, 2025
9c92bd9
feat: add embedded stackblitz component
Cybertron1 Jul 15, 2025
2f74919
feat: add moiree article
Cybertron1 Jul 16, 2025
85a5567
feat: add shortDescription to all articles
Cybertron1 Jul 16, 2025
e203902
feat: improve styling
Cybertron1 Jul 16, 2025
c9a7f60
feat: add social sharing meta tags
Cybertron1 Jul 16, 2025
d8862d9
feat: add proper astro URL
Cybertron1 Jul 16, 2025
75d31fa
feat: add improved social sharing
Cybertron1 Jul 17, 2025
e2661c7
feat: add posthog
Cybertron01Z Aug 5, 2025
df6c435
fix: try to fix prefetching articles
Cybertron01Z Aug 5, 2025
d05b167
fix: improve phone viewport css
Cybertron01Z Aug 6, 2025
a6aa248
fix: improve tagline to be more inclusive
Cybertron01Z Aug 6, 2025
c1efdb6
docs: improve readme to explain the astro blog
Cybertron01Z Aug 6, 2025
61e66dd
feat: add sitemap
Cybertron01Z Aug 6, 2025
302230b
First draft
immo-huneke-zuhlke Jun 20, 2025
310af51
Added save as draft flag
immo-huneke-zuhlke Jun 20, 2025
4688478
Minor corrections and checks
immo-huneke-zuhlke Jun 20, 2025
683c2ce
Move filesystem mirror to a safer location
immo-huneke-zuhlke Jun 23, 2025
0d0a16e
Mention virus protection
immo-huneke-zuhlke Jun 23, 2025
33b183a
Update terraform-with-provider-from-filesystem.md
immo-huneke-zuhlke Jul 1, 2025
c4cc085
After feedback from reviewer timouti (TispBe)
immo-huneke-zuhlke Jul 30, 2025
1937607
Add disagreeing without dividing article
hayrettin-mavis Jul 22, 2025
7cde29d
Address comments for Disagreeing without dividing article
hayrettin-mavis Aug 5, 2025
b82adaf
Update README.md
tispBe Aug 12, 2025
99b2a40
Update README.md
tispBe Aug 12, 2025
04a8892
release resize observer article
Cybertron01Z Aug 13, 2025
8a05f2a
fix: change links pointing to hashnode domain to relative paths
culas Aug 15, 2025
3f43a92
Fix documentation links in the README
eXpl0it3r Sep 3, 2025
af8cd76
release disagreeing without deviding
Cybertron01Z Sep 15, 2025
2749eff
fix description
Cybertron01Z Sep 15, 2025
1f0a023
add AUTHORS.md file
Cybertron01Z Sep 19, 2025
baf8c42
Add Djordje Madic to AUTHORS.md
Sep 22, 2025
f903cc5
add robots.txt
Cybertron01Z Sep 22, 2025
d551697
release terraform article
Cybertron01Z Sep 30, 2025
867b6da
Belimo and Zuhlke: How to win with Flutter in production
Sep 18, 2025
b6ddca9
Update images
Sep 18, 2025
11ada20
Add missing diagram
Sep 18, 2025
0ae00c3
Rename images
Sep 18, 2025
8dff847
Fix
Sep 18, 2025
8c2b1b0
Fix
Sep 18, 2025
3dfe5d3
Add links
Sep 19, 2025
328c823
Add metadata
Sep 19, 2025
2fac022
Reduce image size
Sep 19, 2025
559d2f9
Remove image duplicates
Sep 19, 2025
cf726d3
Compress images
Sep 19, 2025
3762c39
Fix title
Sep 19, 2025
2cdd929
Sentence per line
Sep 19, 2025
5e44fea
Add desktop to tags
Sep 20, 2025
546da0e
Change release date to October 27, 2025
Oct 27, 2025
850f418
Update title for Flutter in Production article
Oct 28, 2025
3ddcfe1
Add Tim Grünewald to the AUTHORS.md file
timgruenewald Nov 12, 2025
9e22e8b
Adding patw to AUTHORS.md
patrickwilmes Nov 11, 2025
d731fb7
Created draft of messaging-first-architecture
gayatri-potawad Jun 24, 2025
46ded7b
Update messaging-first-architecture.md
gayatri-potawad Jun 24, 2025
eb2273f
Updated cover image for messaging-first-architecture.md
gayatri-potawad Jun 24, 2025
1b90aec
Addresses messaging-first-architecture.md
gayatri-potawad Jun 26, 2025
a782b40
Removed date metadata in messaging-first-architecture.md
gayatri-potawad Mar 9, 2026
1e6d87d
removed for restructuring
Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
root = true

[*.md]
max_line_length = 100
max_line_length = 400
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,28 @@
*.iml
out
gen
# build output
dist/

# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# environment variables
.env
.env.production

# macOS-specific files
.DS_Store

pnpm-lock.yaml
.vercel
.vscode
6 changes: 6 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
| Zuhlke Abbrev | Full Name | Email |
| ------------- | ------------- | ------------------------- |
| rumi | Mika Ruch | mika.ruch@zuehlke.com |
| madj | Djordje Madic | djordje.madic@zuehlke.com |
| patw | Patrick Wilmes| patrick.wilmes@zuehlke.com |
| tigr | Tim Grünewald | tim.gruenewald@zuhlke.com |
21 changes: 21 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 RATIU5

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
79 changes: 54 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,80 @@
# software-engineering-corner
# the dev exchange

Repository for our Zuehlke dev blog: [https://software-engineering-corner.zuehlke.com](https://software-engineering-corner.zuehlke.com)
Repository for our Zuehlke dev blog: [https://thedevexchange.com](https://thedevexchange.com)

## Are you a first time contributor?

Create a PR where you add your name to the [AUTHORS.md](./AUTHORS.md) file.

## How to add a blog post

To add new blog posts without having to ask for being added to the Zuhlke organization, the easiest way is forking this repository with your github user and write your blog post in your fork of this repository. If you need help with how forking works, please refer to this guide by github: https://docs.github.com/en/get-started/quickstart/fork-a-repo.
To add new blog posts, fork this repository with your GitHub user and write your blog post in your fork of this repository.
If you need help with how forking works, please refer to this guide by GitHub: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo

Please start your post in the directory `src/articles/<article-name>`.
After that, you can start working on your blog post in your repository.

## Publishing the Article

When you are ready, you can then open a pull request to this repository and set somebody from the organisation as the reviewer.
Once you have created a PR, you will see a comment from Cloudflare with a preview URL, where you can preview the deployed article.

Please start your post in the directory `drafts`. It will be moved to published as soon as it is actually published.
After that, you can start working on your blog post in your repository. For information about the metadata in your blog post and specific markdown of Hashnode please refer to their template repository: https://github.com/Hashnode/Hashnode-source-from-github-template
If you're unfamiliar with this, please refer to this guide on GitHub: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request

When you are ready you can then open a pull request to this repository and set somebody from the organization as the reviewer. As soon as this person has reviewed your PR and everything has been resolved, it can be merged into the main branch. If you're unfamiliar with this, please refer to this guide by github: https://docs.github.com/en/get-started/quickstart/github-flow
As soon as this person has reviewed your PR and everything has been resolved, the editorial team will merge it into the main branch.
**Please note**: **Merging the PR does not mean immediate publishing**.
The editorial team creates a separate publishing timeline, ensuring consistent release cadence, topic diversity, and relevance.
Please be patient, your article will get published eventually.
Reach out to the editorial team privately if you need a time-sensitive publication.

### Top Tip
## Local Testing

It is helpful to write each sentence on a new line. That can make reviews simpler for pinpointing comments. Markdown will ignore these new lines, and the paragraph structure will look as you intend. Take care in bullet point lists though, and validate with preview that it looks as you'd wish.
Astro powers the blog.
You will need Node (or something similar, like Deno or Bun).

## Frontmatter
1. Install Dependencies: `npm install`
2. Run: `npm run dev`
3. Go to http://localhost:4321

We recognized that there are some things which are important in the frontmatter of the articles:
## Images

1. Please add a `saveAsDraft: true` to the frontmatter. We will remove this when we publish the article.
2. Please add a `hideFromHashnodeCommunity: false` to the frontmatter. This makes the blog post searchable from within Hashnode.
3. Use your **Hashnode** username for `publishAs`. You can see it in the [Hashnode user settings](https://hashnode.com/settings).
4. Use tags which are listed here [https://github.com/Hashnode/support/blob/main/misc/tags.json](https://github.com/Hashnode/support/blob/main/misc/tags.json) (use the **slug**) or ensure they exist via the Hashnode search (select "tags"). If you do it wrong, Hashnode may fail to import the article.
Please add all the images to your article folder.
Like this, astro can optimise them, and the readers have a better experience overall.

If you like to have a table of contents shown, you can add `enableToc: true`.
Only use it for longer articles.
## Front Matter

## Upload and use pictures
```
---
title: <short title>
description: <description for the rss feed>
released: <date of when it will be released <- add todays date in ISO 8601 format here>
cover: <path to the cover image>
author: <Your Name>
tags: <list of tags (they don't do anything yet)>
shortDescription: <short description for sharing preview (twitter, facebook, linkedin) max 200 characters>
---
```

To use pictures you can upload them with the Hashnode [uploader tool](https://hashnode.com/uploader). This will output a URL that you can include in your blog post.
Please add this to the start of your article. For reference, please refer to the format of already published articles.

## Top Tip

It is helpful to write each sentence on a new line.
That can make reviews simpler for pinpointing comments.
Markdown will ignore these new lines, and the paragraph structure will look as you intend.
Take care in bullet point lists, though, and validate with a preview that it looks as you'd wish.

## Style

### Point of View: I vs. We

The use of "I" vs. "we" depends on whatever fits the context / type of article best.
The use of "I" vs. "we" depends on whatever fits the context/type of article best.
If it's about patterns/technologies/methods we regularly use and apply in customer projects, go with "we".
In guides and walkthroughs "we" could also be applied, referring to author and reader, or a larger community (web devs, mobile engineers, technology sector, …).
In general, only use "I" when talking about personal opinions, first-hand experiences, or when explicitly refering to you as the author.
In guides and walkthroughs, "we" could also be applied, referring to the author and reader, or a larger community (web devs, mobile engineers, technology sector, …).
In general, only use "I" when talking about personal opinions, first-hand experiences, or when explicitly referring to you as the author.

### Cover Image

Look at previous articles on the blog page to get an idea of the desired style.
Try to avoid overly complex imagery, text or diagrams, or screenshots.
[Unsplash](https://unsplash.com) is a useful source for free high-quality images.

## Links

It seems that Hashnode adds backslashes when using an underscore in a URL. So encode underscores with "%5F".
33 changes: 33 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// @ts-check
import {defineConfig} from "astro/config";
import tailwindcss from "@tailwindcss/vite";

import react from "@astrojs/react";

import expressiveCode from "astro-expressive-code";

import mdx from "@astrojs/mdx";

import sitemap from "@astrojs/sitemap";

// https://astro.build/config
export default defineConfig({
site: 'https://thedevexchange.com',
output: 'static',
vite: {
plugins: [tailwindcss()],
},

integrations: [react(), expressiveCode(), mdx(), sitemap()],

trailingSlash: 'always',

image: {
service: {
entrypoint: 'astro/assets/services/sharp',
config: {
limitInputPixels: false
}
}
},
});
Empty file removed drafts/.gitkeep
Empty file.
Loading