src/data/projects.ts 12.2 K raw
1
import type { ImageMetadata } from "astro";
2
3
import bulletsImg from "@/assets/projects/bullets.png";
4
import andromedaImg from "@/assets/projects/andromeda.png";
5
import scoutImg from "@/assets/projects/scout.png";
6
import sequoiaImg from "@/assets/projects/sequoia.png";
7
import alcoveImg from "@/assets/projects/alcove.jpg";
8
import sippImg from "@/assets/projects/sipp.png";
9
import parcelsImg from "@/assets/projects/parcels.png";
10
import feedsImg from "@/assets/projects/feeds.png";
11
import docsSurfImg from "@/assets/projects/docs-surf.png";
12
import blogFeedsImg from "@/assets/projects/blogfeeds.png";
13
import nornsImg from "@/assets/projects/norns.png";
14
import orbiterImg from "@/assets/projects/orbiter.png";
15
import bhvrImg from "@/assets/projects/bhvr.png";
16
import darkmatterImg from "@/assets/projects/darkmatter.png";
17
import atlasImg from "@/assets/projects/atlas.png";
18
import ipcmImg from "@/assets/projects/ipcm.jpg";
19
import piImg from "@/assets/projects/pi.png";
20
import radicalizeImg from "@/assets/projects/radicalize.webp";
21
import snippetsImg from "@/assets/projects/snippets.jpg";
22
import pinataSdkImg from "@/assets/projects/pinata-sdk.jpg";
23
import cosmicCowboysImg from "@/assets/projects/cosmic-cowboys.png";
24
import ipfsCliImg from "@/assets/projects/ipfs-cli.webp";
25
26
export type ProjectItem = {
27
	title: string;
28
	description: string;
29
	image: ImageMetadata;
30
	link: string;
31
	tags: string[];
32
};
33
34
export const projects: ProjectItem[] = [
35
	{
36
		title: "Bullets",
37
		description:
38
			"Originally built as a companion to Feeds, Bullets is a minimal RSS TUI that lets you browse feeds. Simply provide a URL, or several, and Bullets will render a list of posts that can be opened in the browser. There is no feed tracking, database, or even marking posts as read or unread. It follows the same minimal philosophy of Feeds where you get a list of posts and you can read them as you wish, or pass in a feed that you may only want to view every now and then.",
39
		image: bulletsImg,
40
		link: "https://github.com/stevedylandev/bullets",
41
		tags: ["blogging", "rss", "tui"],
42
	},
43
	{
44
		title: "Andromeda",
45
		description:
46
			"A collection of personal and self hostable software written in Rust. Each app is minimal and focuses on low memory and data usage. Includes common needs like an RSS reader, markdown note taker, even a micro blogging platform. Andromeda also includes a base Rust stack and agent skills that can be used to build more basic web applications.",
47
		image: andromedaImg,
48
		link: "https://andromeda.build",
49
		tags: ["productivity", "self hosting"],
50
	},
51
	{
52
		title: "Scout",
53
		description:
54
			"A minimal iOS Gemini Protocol client in SwiftUI. I became really interested in the Gemini Protocol and didn’t like the existing options out there for iOS, so I built my own. Was a good learning experience and thoroughly enjoy the final product. Features things like bookmarks, searching, themes, client certificates, you name it. Currently in the process of publishing to the App Store.",
55
		image: scoutImg,
56
		link: "https://github.com/stevedylandev/Scout",
57
		tags: ["privacy", "networking"],
58
	},
59
	{
60
		title: "Sequoia",
61
		description:
62
			"While there are several blogging platform options for publishing standard.stie lexicons, there wasn’t much out there for self-hosted blogs. This prompted me to build Sequoia: a CLI that helps take existing blogs and publish them to ATProto. It features an interactive setup, flexible config to meet any SSG or framework, and even the necessary pieces for verification of standard.site lexicons.",
63
		image: sequoiaImg,
64
		link: "https://sequoia.pub",
65
		tags: ["blogging", "atproto", "standard site", "cli"],
66
	},
67
	{
68
		title: "Alcove",
69
		description:
70
			"RSS and blogs pose to be a solution for freedom speech, however RSS readers with sync capabilities often result in a ‘wont be evil’ promise in regards to privacy of what you read. Alcove brings a ‘cant be evil’ tech stack to the table. This app uses Evolu to enable end to end encrption for reading RSS feeds while giving people the ability to sync their reader across multiple devices.",
71
		image: alcoveImg,
72
		link: "https://stevedylan.dev/posts/introducing-alcove/",
73
		tags: ["blogging", "privacy", "rss"],
74
	},
75
	{
76
		title: "Sipp",
77
		description:
78
			"Minimal code sharing app for the web and the terminal, written in Rust. A single ~13MB binary contains a web server, TUI, and CLI. Easy to self host and access through your browser or your terminal. Loads of features such as syntax highlighting, config to authenticated selected endpoints, and CLI actions to quickly create snippets from files.",
79
		image: sippImg,
80
		link: "https://andromeda.build/apps/sipp",
81
		tags: ["developer tools", "productivity", "self hosting"],
82
	},
83
	{
84
		title: "Parcels",
85
		description:
86
			"A minimal package tracking app written in Rust, designed to be self hosted for personal use.",
87
		image: parcelsImg,
88
		link: "https://andromeda.build/apps/parcels",
89
		tags: ["productivity", "self hosting"],
90
	},
91
	{
92
		title: "Feeds",
93
		description:
94
			"A minimal take on an RSS reader, Feeds lets you pull from multiple sources of feeds including URL query params, OPML files, and FreshRSS. Instead of rendering the post, Feeds simply gives you a feed link so you can view the content in its original context. Feeds is also designed to be simple and easy to self host for your own use cases.",
95
		image: feedsImg,
96
		link: "https://andromeda.build/apps/feeds",
97
		tags: ["blogging", "rss", "self hosted"],
98
	},
99
	{
100
		title: "Docs.surf",
101
		description:
102
			"I’ve slowly been falling into ATProto and what it can enable for publishing content on the web, and building a more open web in general. With ATProto you can create records on your server (PDS) that have specific structures known as lexicons. One in particular that is taking of is standard.site. There are two lexicons, Publications and Documents. Both are designed for building interoperable blog posts that can be aggregated. That’s exactly what Docs.surf does, using a mixture of Tap (ATProtos indexer), Cloudflare workers, queues, and D1 databases.",
103
		image: docsSurfImg,
104
		link: "https://docs.surf",
105
		tags: ["blogging", "atproto", "social networking"],
106
	},
107
	{
108
		title: "BlogFeeds.net",
109
		description:
110
			"I’ve personally found the potential of using blogs, rss, and feeds as a replacment for social media. This website is a simple static site that promotes the idea and includes an FreshRSS API proxy to feature people who have the same philosophy and include a feeds page on their blog.",
111
		image: blogFeedsImg,
112
		link: "https://blogfeeds.net",
113
		tags: ["social networking", "blogging"],
114
	},
115
	{
116
		title: "norns",
117
		description:
118
			"Over the years I’ve noticed how so many decentralized applications on EVM chains have slowly built up heavy dependency trees. With some of the supplychain hacks occurring on NPM, I decided it would be a good idea to build atomic web components that achieve all the basic functionality needed to build dApps. The result was norns, which is a library + CLI for simple EVM UI components. Much like shadcn/ui you can import the raw code to your framework or vanilla HTML file and they won’t ever break since they have zero dependencies or base framework; just JavaScript.",
119
		image: nornsImg,
120
		link: "https://norns.so",
121
		tags: ["blockchain", "developer tools", "web frameworks"],
122
	},
123
	{
124
		title: "Orbiter",
125
		description:
126
			"In a world full of complicated CI/CD pipelines there’s a desire for a simpler solution for hosting static websites. Orbiter is a service that does just that, letting people upload and create a static site in 30 seconds. It’s currently being built by Steve along side Justin Hunter and feautes an open platform approach using IPFS and blockchain.",
127
		image: orbiterImg,
128
		link: "https://orbiter.host",
129
		tags: ["ipfs", "blockchain", "developer tools"],
130
	},
131
	{
132
		title: "bhvr",
133
		description:
134
			"I stopped using Next.js and Vercel a while ago due to the amount of vendor lock-in the stack introduced. As an alternative I started using a combination of a Vite + React frontend with a Hono backend. I was setting up separate repos so many times I decided to turn it into a monorepo using Bun. bhvr is a simple barebones template that helps people setup their own project with the same stack, featuring a shared package folder for types that can be used in both server and client. More importantly, each piece can easily be pulled out from one hosting provider and used in another, making it portable and independent.",
135
		image: bhvrImg,
136
		link: "https://bhvr.dev",
137
		tags: ["developer tools", "web frameworks"],
138
	},
139
	{
140
		title: "Darkmatter",
141
		description:
142
			"I got tired of seeing so many developer use terminal emulators that required a login or had paywalls, so I put together a quickstart terminal build using Ghostty. The result is a great DX with all the tools you need, and setting you up to customize it yourself. It also brought about a new theme under the same name, which has been ported to Neovim and Zed if you’re interested.",
143
		image: darkmatterImg,
144
		link: "https://github.com/stevedylandev/darkmatter",
145
		tags: ["developer tools", "neovim", "terminal"],
146
	},
147
	{
148
		title: "Atlas",
149
		description:
150
			"A simple yet powerful CLI for ENS queries and utilities. Can resolve different types of records for names or addresses, as well as provide a printed profile, hashes, or ENS contract deployments",
151
		image: atlasImg,
152
		link: "https://github.com/stevedylandev/atlas",
153
		tags: ["developer tools", "ens", "blockchain"],
154
	},
155
	{
156
		title: "IPCM",
157
		description:
158
			"IPCM (InterPlanetary CID Mapping) is a blockchain approach to solving the problem of dynamic IPFS data. Instead of using a slower solution like IPNS to point to new content, IPCM is a smart contract that is used as the source of truth for a piece of dynamic content. It features a simple state that can only be updated by the owner of the contract but read by anyone, as well as a public version history through Solidity events.",
159
		image: ipcmImg,
160
		link: "https://ipcm.dev",
161
		tags: ["blockchain", "ipfs", "developer tools"],
162
	},
163
	{
164
		title: "Pi-Widget",
165
		description:
166
			"A small server written in Go that you can run on your Raspberry Pi to display vitals in real time. For my particular Pi it displays IPFS repo stats and system stats, with more updates on the way",
167
		image: piImg,
168
		link: "https://github.com/stevedylandev/pi-widget",
169
		tags: ["hardware", "ipfs", "raspberry pi"],
170
	},
171
	{
172
		title: "Radicalize",
173
		description:
174
			"A CLI written in Go that can help migrate existing local or remote git repos to Radicle.xyz",
175
		image: radicalizeImg,
176
		link: "https://github.com/stevedylandev/radicalize",
177
		tags: ["developer tools", "radicle", "git"],
178
	},
179
	{
180
		title: "Snippets",
181
		description:
182
			"I was tired of poor code sharing experiences like Pastebin that were littered with ads, and I really loved the experience of Ray.so for images. This led to the creation of Snippets.so, an open sourced and extensible code sharing solution that’s minimal and clean.",
183
		image: snippetsImg,
184
		link: "https://snippets.so",
185
		tags: ["developer tools", "ipfs", "productivity"],
186
	},
187
	{
188
		title: "Pinata SDK",
189
		description:
190
			"The original Pinata SDK was written for Node.js years ago, and as the developer ecosystem evolved a more flexible SDK was necessary. This project was a full typescript rewrite from scratch that includes a whole new developer experience that intuitive, with far more methods and capabilities than before.",
191
		image: pinataSdkImg,
192
		link: "https://docs.pinata.cloud/sdk",
193
		tags: ["developer tools", "ipfs"],
194
	},
195
	{
196
		title: "Cosmic Cowboys",
197
		description:
198
			"This was a hackathon project that I worked on with two coworkers during EthOnline 2023. The goal was to build a blockchain game that used AI NPCs with ERC-6551. I handled all the smart contract work and bits and pieces of the web app. Overall we had a pretty unique experience and glimpse into the future of gaming, and it was chosen as a finalist project.",
199
		image: cosmicCowboysImg,
200
		link: "https://ethglobal.com/showcase/cosmic-cowboys-3q0co",
201
		tags: ["blockchain", "ai", "ipfs"],
202
	},
203
	{
204
		title: "Pinata IPFS CLI",
205
		description:
206
			"A Go rewrite of the Node.js CLI for Pinata, allows fast and extensive uploads to Pinata. Also includes helpful features for listing files and other API functionalities. ",
207
		image: ipfsCliImg,
208
		link: "https://github.com/PinataCloud/ipfs-cli",
209
		tags: ["developer tools", "ipfs"],
210
	},
211
];