chore: Updated projects 052f20f3
Steve · 2025-04-21 20:25 8 file(s) · +13 −177
.editorconfig (deleted) +0 −9
1 -
root = true
2 -
3 -
[*]
4 -
end_of_line = lf
5 -
indent_style = space
6 -
indent_size = 2
7 -
charset = utf-8
8 -
trim_trailing_whitespace = true
9 -
insert_final_newline = true
.eslintignore (deleted) +0 −4
1 -
dist
2 -
node_modules
3 -
.github
4 -
.changeset
.eslintrc.js (deleted) +0 −60
1 -
/** @type {import("@types/eslint").Linter.Config} */
2 -
module.exports = {
3 -
	ignorePatterns: ["node_modules", "dist"],
4 -
	root: true,
5 -
	env: {
6 -
		node: true,
7 -
	},
8 -
	parser: "@typescript-eslint/parser",
9 -
	plugins: ["@typescript-eslint", "prettier"],
10 -
	extends: [
11 -
		"eslint:recommended",
12 -
		"plugin:@typescript-eslint/recommended",
13 -
		"plugin:prettier/recommended",
14 -
		"plugin:astro/recommended",
15 -
		"plugin:astro/jsx-a11y-recommended",
16 -
	],
17 -
	overrides: [
18 -
		{
19 -
			files: ["*.astro"],
20 -
			parser: "astro-eslint-parser",
21 -
			parserOptions: {
22 -
				parser: "@typescript-eslint/parser",
23 -
				extraFileExtensions: [".astro"],
24 -
			},
25 -
			rules: {
26 -
				"prettier/prettier": "off",
27 -
				"import/no-named-as-default-member": "off",
28 -
				"import/no-named-as-default": "off",
29 -
				"@typescript-eslint/consistent-type-imports": "error",
30 -
				"@typescript-eslint/no-unused-vars": "off",
31 -
			},
32 -
		},
33 -
		{
34 -
			files: ["**/*.mjs"],
35 -
			parserOptions: {
36 -
				sourceType: "module",
37 -
				ecmaVersion: 2015,
38 -
			},
39 -
			rules: {
40 -
				"import/no-extraneous-dependencies": "off",
41 -
				"import/no-unresolved": "off",
42 -
			},
43 -
		},
44 -
		{
45 -
			files: ["**/*.ts"],
46 -
			parser: "@typescript-eslint/parser",
47 -
			extends: ["plugin:@typescript-eslint/recommended"],
48 -
			rules: {
49 -
				"@typescript-eslint/no-unused-vars": [
50 -
					"error",
51 -
					{ argsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_" },
52 -
				],
53 -
				"@typescript-eslint/no-non-null-assertion": "off",
54 -
			},
55 -
		},
56 -
	],
57 -
	rules: {
58 -
		"@typescript-eslint/no-var-requires": "warn",
59 -
	},
60 -
};
.prettierignore (deleted) +0 −32
1 -
*.min.js
2 -
**/node_modules/**
3 -
flow-typed
4 -
5 -
# webfont demo styles
6 -
**/specimen_files
7 -
8 -
# built sites
9 -
benchmarks/**/public
10 -
e2e-tests/**/public
11 -
examples/**/public
12 -
integration-tests/**/public
13 -
www/public
14 -
15 -
# cache-dirs
16 -
**/.cache
17 -
18 -
# ignore built packages
19 -
packages/**/*.js
20 -
!packages/*/src/**/*.js
21 -
22 -
# fixtures
23 -
**/__testfixtures__/**
24 -
**/__tests__/fixtures/**
25 -
26 -
infrastructure
27 -
28 -
# coverage
29 -
coverage
30 -
31 -
pnpm-lock.yaml
32 -
dist
.prettierrc.js (deleted) +0 −21
1 -
/** @type {import("@types/prettier").Options} */
2 -
module.exports = {
3 -
	printWidth: 100,
4 -
	semi: true,
5 -
	singleQuote: false,
6 -
	tabWidth: 2,
7 -
	useTabs: true,
8 -
	plugins: [
9 -
		require("prettier-plugin-astro"),
10 -
		require("prettier-plugin-tailwindcss") /* Must come last */,
11 -
	],
12 -
	pluginSearchDirs: false,
13 -
	overrides: [
14 -
		{
15 -
			files: "**/*astro",
16 -
			options: {
17 -
				parser: "astro",
18 -
			},
19 -
		},
20 -
	],
21 -
};
.stylelintrc.js (deleted) +0 −30
1 -
module.exports = {
2 -
	extends: ["stylelint-config-standard", "stylelint-config-prettier"],
3 -
	overrides: [
4 -
		{
5 -
			files: ["*.astro", "**/*.astro"],
6 -
			customSyntax: "postcss-html",
7 -
		},
8 -
	],
9 -
	rules: {
10 -
		"at-rule-no-unknown": [
11 -
			true,
12 -
			{
13 -
				ignoreAtRules: ["tailwind", "apply", "variants", "responsive", "screen"],
14 -
			},
15 -
		],
16 -
		"function-no-unknown": [true, { ignoreFunctions: ["theme"] }],
17 -
		"declaration-block-trailing-semicolon": null,
18 -
		"declaration-empty-line-before": "never",
19 -
		"no-descending-specificity": null,
20 -
		"custom-property-empty-line-before": "never",
21 -
		"hue-degree-notation": "number",
22 -
		"alpha-value-notation": "number",
23 -
		"selector-pseudo-class-no-unknown": [
24 -
			true,
25 -
			{
26 -
				ignorePseudoClasses: ["global"],
27 -
			},
28 -
		],
29 -
	},
30 -
};
src/data/projects.ts +11 −20
22 22
    tags: ["blockchain", "ipfs", "developer tools"]
23 23
  },
24 24
  {
25 -
    title: "HelloBase",
26 -
    description:
27 -
      "Blockchain is complicated, and learning everything there is to know just to start using it can be overwhelming. That's why I build HelloBase, a simple hello world for developers who are interesting in building on blockchain for the first time. It features basic knowledge as well as deploying and interacting with smart contracts on Base using Coinbase Smart Wallets.",
28 -
    image: "https://www.hellobase.dev/og.png",
29 -
    link: "https://hellobase.dev",
30 -
    tags: ["blockchain", "developer tools"],
25 +
    title: "GitCast",
26 +
    description: "A Farcaster Mini App that merges the GitHub event feed into the Farcaster social graph. Warpcast created an API that exposed the GitHub verifications made by all users and I thought it would be fun to see a feed GitHub events for all the people I follow that have the verification. Only problem was the number was in the 40K+ range which was too many to filter through. To solve this I built a fairly complex backend that indexes for each user that wants to see their feed and stores the users who have the verifications as well as their events. This was a great exercise in optimizing data pipelines and uses a mix of Cloudflare workers, KVs, D1 database, and queues.",
27 +
    image: "https://gitcast.dev/og.png",
28 +
    link: "https://gitcast.dev",
29 +
    tags: ["farcaster", "social"]
31 30
  },
32 31
  {
33 32
    title: "Mast",
34 33
    description:
35 34
      "A simple TUI used for sending casts on Farcaster written in Go. I wanted a project to try out the Bubbletea TUI framework from Charm.sh and this fit the bill perfectly. It's authorized using your own custody signers (can be created through castkeys.xyz) and allows the user to set their own Farcaster hub.",
36 35
    image:
37 -
      "https://cdn.stevedylan.dev/files/bafkreigqnynyjfax3loj5maiwnvv3qqxotpoajiq4p6r6glmt6pjmowjke",
36 +
      "https://cdn.stevedylan.dev/files/bafkreicb5ravot4fg6cvjmasp7l4n3c5x26lpejefx5mx6byubcq4oib4y",
38 37
    link: "https://github.com/stevedylandev/mast-cli",
39 38
    tags: ["farcaster", "developer tools"],
40 39
  },
77 76
      "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.",
78 77
    image:
79 78
      "https://docs.mypinata.cloud/ipfs/bafkreidv5iptnieh6eijei7enqc4mdhxpte3ries23heqf7s2hu3gdu6ru",
80 -
    link: "https://docs.pinata.cloud/ipfs-sdk",
79 +
    link: "https://docs.pinata.cloud/pinata",
81 80
    tags: ["developer tools", "ipfs"],
82 81
  },
83 82
  {
102 101
    description:
103 102
      "IPFS can unlock content for decentralized social media, and Photocaster was built to demonstrate just that. Using the Farcaster protocol the app allows users to scroll through a feed of just images from select photo centered channels, sign in with their account, and upload photos via IPFS. What makes it special is the photo’s full resolution is on IPFS, but a resized copy is put on the Farcaster network. This keeps apps light, but allows anyone on Photocaster to see the full resolution image.",
104 103
    image: "https://www.photocaster.xyz/og.png",
105 -
    link: "https://photocaster.xyz",
104 +
    link: "https://github.com/PinataCloud/PhotoCaster",
106 105
    tags: ["farcaster", "ipfs"],
107 106
  },
108 107
  {
115 114
    tags: ["blockchain", "ai", "ipfs"],
116 115
  },
117 116
  {
118 -
    title: "Pinata-go-cli",
117 +
    title: "Pinata IPFS CLI",
119 118
    description:
120 119
      "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. ",
121 120
    image:
122 -
      "https://dweb.mypinata.cloud/ipfs/QmasHAZJ2kb9k3AqkQP4yzYbZn8zxFGsrygNv6HBdMn1uE",
123 -
    link: "https://github.com/PinataCloud/pinata-go-cli",
121 +
      "https://dweb.mypinata.cloud/ipfs/QmNcdx9t48z7RQUXUZZHmuc4zBfyBxKLjDfEgmfhiop7j7?img-format=webp",
122 +
    link: "https://github.com/PinataCloud/ipfs-cli",
124 123
    tags: ["developer tools", "ipfs"],
125 -
  },
126 -
  {
127 -
    title: "Diet-cast",
128 -
    description:
129 -
      "A minimal channel specific lite client for Farcaster. Change a few lines in the config file and have a fully functional client with the ability to view the channel feed and cast to it. ",
130 -
    image: "https://www.dietcast.xyz/og.png",
131 -
    link: "https://www.dietcast.xyz",
132 -
    tags: ["farcaster", "ipfs"],
133 124
  },
134 125
];
tsconfig.json +2 −1
1 1
{
2 2
  "extends": "astro/tsconfigs/base",
3 3
  "compilerOptions": {
4 +
    "strict": true,
4 5
    "baseUrl": ".",
5 6
    "paths": {
6 7
      "@/components/*": [
36 37
    ".vscode",
37 38
    "dist"
38 39
  ]
39 -
}
40 +
}