-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #15 from calvinmclean/projects
Add projects page and summaries
- Loading branch information
Showing
7 changed files
with
51 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# Article Sync | ||
|
||
[](https://github.com/calvinmclean/article-sync) | ||
|
||
Article Sync is a simple CLI written in Go + a GitHub Action to easily run it in GitHub. This enables synchronizing markdown articles (like the ones on this site!) to blog/article platforms like [dev.to](https://dev.to/calvinmclean/manage-dev-articles-with-git-and-github-actions-13md). | ||
|
||
The GitHub Action will leave comments on PRs with an explanation of changes after merging. Then, once merged to `main`, it will synchronize with the platforms and commit any new article IDs and links to the `article.json` files. | ||
|
||
A fun feature of `article-sync` is that you can provide a link to an image from [gopherize.me](https://gopherize.me) to automatically create an article banner with the title and the generated gopher image. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Automated Garden | ||
|
||
[](https://github.com/calvinmclean/automated-garden) | ||
|
||
Automated Garden is an open source irrigation controller. The repository contains code for ESP32 microcontrollers to toggle valves and report sensor data as well as a Go server which provides the API, scheduling, and serves the UI. Currently, the UI is created with Svelte but I am re-writing to use HTMX. It is integrated with the Netatmo API to allow watering based on real measurements from your Netatmo weather sensors. | ||
|
||
The backend communicates with multiple devices using the MQTT message protocol. The individual controllers then push data and watering logs to InfluxDB via MQTT and Telegraf. Grafana is used to visualize sensor data and Prometheus metrics from the application. | ||
|
||
The architecture of the project uses InfluxDB to store time-series data from sensors and logs to confirm that the controller successfully completed watering. | ||
|
||
This project also was the starting point for the API structure that was used to create `babyapi`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# BabyAPI | ||
|
||
[](https://github.com/calvinmclean/babyapi) | ||
|
||
`babyapi` is a super simple framework that automatically creates an HTTP API for create, read, update, and delete operations on a struct. It is intended to make it as easy as possible to go from nothing to a fully functioning REST API, but also aims to allow enough flexibility for creating real web applications. It also has built-in integrations for using Redis as a key-value store so you can quickly and easily create an HTTP API with persistent storage. | ||
|
||
I got tired of re-writing boilerplate code for HTTP handling in my `automated-garden` project. I also was interested in learning about generics in Go, so I extracted some of the generic behaviors into reusable methods. This eventually evolved into `babyapi`. | ||
|
||
You can read more about `babyapi` in [this article that I wrote](https://dev.to/calvinmclean/the-easiest-way-to-create-a-rest-api-with-go-20bo) and the [GitHub repository](https://github.com/calvinmclean/babyapi). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Tic Tac Go | ||
|
||
[](https://github.com/calvinmclean/tic-tac-go) | ||
|
||
Tic Tac Go is a tic tac toe game implemented using Go and HTMX. It uses server-sent events to enable multiplayer without websockets. Simply share the link with a friend to have them join your game. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Projects | ||
|
||
I enjoy working on programming projects in my free time to learn new things and build tools that are useful in my regular life. | ||
|
||
These are some of my side projects that I am particularly proud of. Check out [my GitHub](https://github.com/calvinmclean) to see all of my projects! | ||
|
||
* [`babyapi`: Simple HTTP API framework in Go](projects/babyapi.md) | ||
* [`automated-garden`: Weather-aware open irrigation controller](projects/automated_garden.md) | ||
* [`article-sync`: CLI and GitHub Action to sync articles from this repostory to Dev.to](projects/article_sync.md) | ||
* [`tic-tac-go`: web-based tic tac toe game with Go and HTMX](projects/tic_tac_go.md) |