8 Commits

Author SHA1 Message Date
hikari 3964ad5bb0 chore: add words to cspell config
Node.js CI / CI (pull_request) Failing after 28s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m0s
2026-04-28 12:10:09 -07:00
hikari aff786c026 chore: add anonymous testimonial
Node.js CI / CI (pull_request) Failing after 19s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 56s
2026-04-28 12:04:15 -07:00
hikari 46713df7aa fix: resolve cspell issues from new testimonial entries
Node.js CI / CI (pull_request) Failing after 27s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 53s
2026-04-02 20:23:23 -07:00
hikari 73efc67dd9 chore: add testimonials from Dev.to, Hashnode, and Reddit sweeps
Node.js CI / CI (pull_request) Failing after 17s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 57s
2026-04-02 19:59:05 -07:00
hikari f9d3ef698f chore: add testimonials from freeCodeCamp forum sweep 2026-04-02 18:46:10 -07:00
hikari 6979bc0e8e chore: add testimonials from Bluesky sweep 2026-04-02 18:36:35 -07:00
hikari 1b9cc0464d chore: add testimonials from LinkedIn, Google Chat, and Discord sweeps 2026-04-02 18:00:55 -07:00
hikari c0e59e7344 chore: add 13 new testimonials and remove duplicate 2026-04-02 12:47:24 -07:00
6 changed files with 165 additions and 238 deletions
-19
View File
@@ -3,7 +3,6 @@
"language": "en-GB",
"words": [
"Abalise",
"Aditya",
"Anny",
"Aeris",
"Alix",
@@ -23,7 +22,6 @@
"caelia",
"Calenelle",
"callista",
"Chronara",
"cashapp",
"catz",
"codeofdreams",
@@ -31,12 +29,9 @@
"Celestine",
"Caylus",
"Chibika",
"compsci",
"Deepgram",
"Devashree",
"Eclaire",
"Eirene",
"Ephemere",
"Elaria",
"Elowyn",
"Elunara",
@@ -51,7 +46,6 @@
"Isekai",
"iuvo",
"Jaoude",
"Karnani",
"Karla",
"Karlo",
"Katey",
@@ -67,7 +61,6 @@
"manuarora",
"maribelle",
"minjo",
"Minori",
"modeling",
"maylin",
"Meliora",
@@ -76,7 +69,6 @@
"Mohapatra",
"Mommy",
"Mrugesh",
"Nagpal",
"naomis",
"nhcarrigan",
"Nielda",
@@ -89,25 +81,18 @@
"opencollective",
"oriana",
"pavelle",
"Pham",
"prez",
"plamoni",
"procz",
"Qais",
"Ranjan",
"Rennemeyer",
"Rion",
"Rondelle",
"roseaboveit",
"rosalia",
"ruus",
"Ruutuli",
"Rythm",
"Sanghvi",
"Satyarth",
"Shirude",
"Shresthkumar",
"Simular",
"Saisoku",
"Sema",
"Serenya",
@@ -118,10 +103,8 @@
"Sylvara",
"Takada",
"Taryne",
"Tatsumi",
"Technomancer",
"Tessara",
"townhall",
"TTRPG",
"Thalassa",
"thessalia",
@@ -131,8 +114,6 @@
"Urmatan",
"Umbrelle",
"Vajda",
"Yash",
"Valerium",
"Veluna",
"verena",
"vitalia",
+24 -2
View File
@@ -45,7 +45,18 @@ projects:
- Naomi Public License
tags:
- community
- guid: cordelia-taryne
name: Cordelia Taryne
description: A user-installable Discord app that allows you to ask questions, generate
alt text for images, evaluate code, and more.
webpageUrl:
url: https://cordelia.nhcarrigan.com/
repositoryUrl:
url: https://git.nhcarrigan.com/nhcarrigan/cordelia-taryne
licenses:
- Naomi Public License
tags:
- community
- guid: gwen-abalise
name: Gwen Abalise
description: A ticketing system for Discord servers.
@@ -57,7 +68,18 @@ projects:
- Naomi Public License
tags:
- community
- guid: maylin-taryne
name: Maylin Taryne
description: A helpful and supportive Discord bot that allows you to have conversations
with a virtual friend in private messages.
webpageUrl:
url: https://maylin.nhcarrigan.com/
repositoryUrl:
url: https://git.nhcarrigan.com/nhcarrigan/maylin-taryne
licenses:
- Naomi Public License
tags:
- community
- guid: melody-iuvo
name: Melody Iuvo
description: A user-installable task management application for Discord.
+81 -149
View File
@@ -1,4 +1,4 @@
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/rosalia.png'
category: websites
description: >-
Our global logging server, which pipes logs from all of our apps into a
@@ -16,7 +16,7 @@
premium: true
url: 'https://trans.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/aria.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/aria.png'
category: community
description: >-
A user-installable bot that allows you to translate any message into your
@@ -25,7 +25,7 @@
premium: true
url: 'https://aria.nhcarrigan.com/'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/becca.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/becca.png'
category: community
description: >-
A user-installable Discord app that facilitates a solo Dungeons and Dragons
@@ -34,23 +34,39 @@
premium: true
url: 'https://becca.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/gwen.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/cordelia.png'
category: community
description: >-
A user-installable Discord app that allows you to ask questions, generate
alt text for images, evaluate code, and more.
name: Cordelia Taryne
premium: true
url: 'https://cordelia.nhcarrigan.com/'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/gwen.png'
category: community
description: A ticketing system for Discord servers.
name: Gwen Abalise
premium: true
url: 'https://gwen.nhcarrigan.com/'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/melody.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/maylin.png'
category: community
description: >-
A helpful and supportive Discord bot that allows you to have conversations
with a virtual friend in private messages.
name: Maylin Taryne
premium: true
url: 'https://maylin.nhcarrigan.com/'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/melody.png'
category: community
description: A user-installable task management application for Discord.
name: Melody Iuvo
premium: true
url: 'https://melody.nhcarrigan.com/'
wip: false
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/beccalia.png'
category: apps
description: >-
Originally planned as the story of Becca and Rosalia growing up, this game
@@ -59,7 +75,7 @@
premium: false
url: 'https://beccalia.nhcarrigan.com/origins'
wip: false
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/beccalia.png'
category: apps
description: >-
An introductory story that sets the stage for the Beccalia universe,
@@ -91,7 +107,7 @@
premium: false
url: 'https://blog.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/nymira.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/nymira.png'
category: websites
description: >-
A service that allows you to claim a custom <username>.naomi.party username
@@ -116,7 +132,7 @@
premium: false
url: 'https://git.nhcarrigan.com'
wip: false
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/hikari.png'
category: websites
description: This dashboard!
name: Hikari
@@ -139,7 +155,7 @@
premium: false
url: 'https://mommy.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/lucinda.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/lucinda.png'
category: websites
description: A kanban-style task management site.
name: Lucinda
@@ -153,14 +169,14 @@
premium: false
url: 'https://nhcarrigan.com'
wip: false
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/vitalia.png'
category: websites
description: A full-featured nutrition tracker with community-driven nutrient data.
name: Vitalia
premium: true
url: 'https://vitalia.nhcarrigan.com'
wip: true
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/octavia.png'
category: apps
description: >-
Linux-native music player application with a focus on handling large
@@ -169,7 +185,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/maribelle.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/maribelle.png'
category: community
description: >-
A Discord bot that allows you to configure daily progress huddle reminders
@@ -178,7 +194,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/sorielle.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/sorielle.png'
category: community
description: >-
A Discord bot that allows servers to specify a venting channel for automatic
@@ -187,21 +203,21 @@
premium: true
url: 'https://sorielle.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/verena.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/verena.png'
category: community
description: A Discord bot that allows identity and age verification.
name: Verena
premium: true
url: null
wip: true
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/thalassa.png'
category: apps
description: A rich presence application for Linux.
name: Thalassa
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/aeris.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/aeris.png'
category: websites
description: >-
An authentication service featuring magic links and support for multiple
@@ -210,7 +226,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/liora.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/liora.png'
category: community
description: >-
A Discord bot that allows your server members to specify 'highlight' words,
@@ -219,14 +235,14 @@
premium: true
url: https://liora.nhcarrigan.com
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/thessalia.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/thessalia.png'
category: community
description: An RPG game on Discord
name: Thessalia
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/callista.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/callista.png'
category: community
description: >-
A user-installable Discord bot that allows you to bookmark messages and save
@@ -235,28 +251,28 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/isolda.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/isolda.png'
category: apps
description: 'Modern, sleek email client for the web or desktop'
name: Isolda
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/meliora.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/meliora.png'
category: websites
description: 'Embeddable chat widget, comment section, and full support flow utility.'
name: Meliora
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/aurelia.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/aurelia.png'
category: websites
description: Blogging platform with markdown editor
name: Aurelia
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/eirene.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/eirene.png'
category: community
description: >-
Website and Discord activity that allows you to participate in code
@@ -265,28 +281,28 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/amirei.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/amirei.png'
category: websites
description: A quick social link aggregator for 'link in bio' pages.
name: Amirei
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/zephra.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/zephra.png'
category: websites
description: Micro-blogging social media platform.
name: Zephra
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/oriana.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/oriana.png'
category: websites
description: Uptime monitoring tool with status pages
name: Oriana
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/lyra.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/lyra.png'
category: websites
description: >-
A web-based API mocking tool, allowing you to create temporary endpoints for
@@ -295,14 +311,14 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/selene.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/selene.png'
category: apps
description: A local-only privacy-focused REST API client.
name: Selene
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/sybil.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/sybil.png'
category: community
description: >-
A Discord bot that syndicates forum threads to an indexable website and
@@ -311,14 +327,14 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/calenelle.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/calenelle.png'
category: websites
description: A group coordination app with event scheduling and such.
name: Calenelle
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/rowena.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/rowena.png'
category: websites
description: >-
Web app that allows you to create and share forms, and track responses in a
@@ -327,7 +343,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/alouette.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/alouette.png'
category: websites
description: >-
A web server that allows you to set up arbitrary webhooks and format them to
@@ -336,7 +352,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/clarion.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/clarion.png'
category: community
description: >-
A Discord bot with dashboard that allows server mangers to post and edit
@@ -345,14 +361,14 @@
premium: true
url: null
wip: true
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/elowyn.png'
category: websites
description: A quick website that helps you format text.
name: Elowyn
premium: false
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/evangeline.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/evangeline.png'
category: community
description: >-
A Discord bot that allows you to configure canned replies, retrieve them
@@ -361,49 +377,49 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/theodora.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/theodora.png'
category: community
description: A Discord bot that generates 100 days of code reminders.
name: Theodora
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/vivienne.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/vivienne.png'
category: websites
description: An RSS feed reader/management site.
name: Vivienne
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/veluna.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/veluna.png'
category: community
description: Discord bot that allows you to receive and answer anonymous questions.
name: Veluna
premium: false
url: https://veluna.nhcarrigan.com
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/elysium.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/elysium.png'
category: apps
description: Idle RPG in the browser.
name: Elysium
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/chibika.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/chibika.png'
category: community
description: A Discord bot that generates ascii anime girls.
name: Chibika
premium: true
url: 'https://chibika.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/elaria.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/elaria.png'
category: websites
description: Meeting schedule coordination tool.
name: Elaria
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/elunara.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/elunara.png'
category: community
description: >-
Discord bot that allows users to proxy messages so they correctly appear as
@@ -412,7 +428,7 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/aureline.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/aureline.png'
category: websites
description: >-
Web app that allows you to create/upload digital badges and certifications
@@ -421,21 +437,21 @@
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/lynira.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/lynira.png'
category: apps
description: Link shortener managed via a Discord bot.
name: Lynira
premium: true
url: 'https://lynira.link'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/altaria.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/altaria.png'
category: community
description: A Discord bot that reminds you to provide alt-text for images.
name: Altaria
premium: false
url: 'https://altaria.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/pavelle.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/pavelle.png'
category: community
description: >-
Discord bot that allows you to throw things (like cake) at your fellow
@@ -444,7 +460,7 @@
premium: true
url: 'https://pavelle.nhcarrigan.com'
wip: false
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/amari.png'
category: community
description: >-
Naomi's virtual personal assistant who helps out with automation around our
@@ -453,28 +469,28 @@
premium: false
url: 'https://amari.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/serenya.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/serenya.png'
category: community
description: Discord bot that allows you to force yourself to take a break.
name: Serenya
premium: false
url: 'https://serenya.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/caelia.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/caelia.png'
category: community
description: Discord bot that gently reminds you to use inclusive language.
name: Caelia
premium: false
url: 'https://caelia.nhcarrigan.com'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/tessara.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/tessara.png'
category: community
description: A Discord bot that allows you to collect and use trading cards that are actually conversation starters.
name: Tessara
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/hacksmiths.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/hacksmiths.png'
category: websites
description: Online programming-themed party game.
name: Hacksmiths
@@ -495,14 +511,14 @@
premium: false
url: 'https://marketplace.visualstudio.com/items?itemName=nhcarrigan.naomis-themes'
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/meridia.png'
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/meridia.png'
category: apps
description: Our custom metrics and analytics server.
name: Meridia
premium: false
url: null
wip: true
- avatar: null
- avatar: 'https://cdn.nhcarrigan.com/new-avatars/a4p.png'
category: community
description: A custom Discord bot for the Artists4Palestine charity initiative.
name: Artists4Palestine Bot
@@ -523,7 +539,7 @@
premium: false
url: "https://www.npmjs.com/package/@nhcarrigan/eslint-config"
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/celestine.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/celestine.png"
category: community
description: A powerful moderation bot for Discord.
name: Celestine
@@ -586,7 +602,7 @@
premium: false
url: "https://git.nhcarrigan.com/nhcarrigan/scripts"
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/umbrelle.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/umbrelle.png"
category: community
description: A Discord bot that allows you to set up a honeypot channel for catching compromised accounts.
name: Umbrelle
@@ -607,136 +623,52 @@
premium: false
url: "https://www.npmjs.com/package/@nhcarrigan/discord-analytics"
wip: false
- avatar: null
- avatar: "https://cdn.nhcarrigan.com/new-avatars/keiko.png"
category: community
description: Naomi's personal AI-powered research assistant.
name: Keiko
premium: false
url: "https://keiko.nhcarrigan.com"
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/sylvara.png'
- avatar: https://cdn.nhcarrigan.com/new-avatars/sylvara.png
category: community
description: A Discord bot that allows you to make your message sound more professional.
name: Sylvara
premium: true
url: null
wip: true
- avatar: 'https://cdn.nhcarrigan.com/avatars/nomena.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/nomena.png"
category: community
description: Naomi's personal AI-powered project name/avatar generator.
name: Nomena
premium: false
url: null
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/eclaire.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/eclaire.png"
category: websites
description: A website that allows you to speak into your microphone and have your words translated into another language.
name: Eclaire
premium: false
url: "https://eclaire.nhcarrigan.com"
wip: false
- avatar: null
- avatar: "https://cdn.nhcarrigan.com/new-avatars/vivicrea.png"
category: community
description: Discord bot to generate art of Naomi
name: Vivicrea
premium: false
url: null
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/tyche.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/tyche.png"
category: community
description: Discord bot that allows you to roll TTRPG dice.
name: Tyche
premium: false
url: "https://tyche.nhcarrigan.com"
wip: false
- avatar: 'https://cdn.nhcarrigan.com/avatars/saisoku.png'
- avatar: "https://cdn.nhcarrigan.com/new-avatars/saisoku.png"
category: community
description: A Discord bot that encourages (or bullies) you to complete important tasks.
name: Saisoku
premium: true
url: "https://saisoku.nhcarrigan.com"
wip: false
- avatar: null
category: community
description: Discord bot that monitors boost status in the Caylus Crew server.
name: Valerium
premium: false
url: null
wip: false
- avatar: null
category: apps
description: App for running one-off or occasionally recurring scripts across various platforms.
name: Ephemere
premium: false
url: null
wip: false
- avatar: null
category: websites
description: A fun site about the fantasy version of Naomi, and the characters around her.
name: Lore
premium: false
url: null
wip: false
- avatar: null
category: apps
description: A cute desktop wrapper for Claude Code with an anime girl.
name: Hikari Desktop
premium: false
url: null
wip: false
- avatar: null
category: community
description: Discord bot to facilitate breakout sessions and coffee chats.
name: Rondelle
premium: false
url: null
wip: false
- avatar: null
category: apps
description: A 100% local meeting transcription and summarisation tool.
name: Chronara
premium: false
url: null
wip: false
- avatar: null
category: websites
description: A collection of silly fun static pages.
name: Silly Sites
premium: false
url: null
wip: false
- avatar: null
category: websites
description: Naomi's personal library tracking app.
name: Library
premium: false
url: 'https://library.nhcarrigan.com'
wip: false
- avatar: null
category: community
description: A community bot and archival tool.
name: Minori
premium: false
url: null
wip: true
- avatar: null
category: apps
description: Desktop app for generating Naomi art.
name: Tatsumi
premium: false
url: null
wip: false
- avatar: null
category: websites
description: Naomi's personality configuration and profile.
name: Personality
premium: false
url: 'https://personality.nhcarrigan.com'
wip: false
- avatar: null
category: websites
description: A simple QR code generator.
name: QR Generator
premium: false
url: 'https://qr.nhcarrigan.com'
wip: false
-66
View File
@@ -220,69 +220,3 @@
- name: Anonymous
content: "Hello, hello Naomi!!! Wow, thank you so much for your message! 💗\n\nFirst, I hope you know that even if I didn't get the EC role, I just really wanted to help out such an inspirational community and to heed your call! I'm really hoping the medical issues you mentioned will be resolved completely and soonest! 🙏\n\nTo be super candid, I've just been a \"lurker\" and \"floater\" in our Discord and my freecodecamp progress is frankly quite bleak. 😬 But even as a somewhat inactive member of our community, I have seen how much constant work you have done and all the kindness, inspiration and positive energy and time you've spent for each and all of us to keep improving through the years! 💕 ❤️ 💖 I am just hoping I can support you and the FCC gang in whatever little way I can or that you may need now with your open invitation.\n\nSecond, thank you so, so much just basically for being you. ❣️ The online world can be so cold, fake and uncaring--but I feel your graciousness, warmth and tenderness through your constancy, words and patience despite the virtuality of interactions!\n\nThird, I'm really looking forward to getting to know you and everyone for the long term in support of such a cool and helpful community! Openly, I admit that I do not know which even to host yet. I just want to pitch in as much as you guys need and I can. From the outset, honestly I should have no business being an EC! Then again, it's time to roll up the sleeves and do some good work as you and the gang have been CONSTANT examples of. 🥰 I've been such a freeloader from you guys! I have every intention of changing some of that as an EC under your nurturing guidance! 😍\n\nOkidokie, I might have taken too much of your time already! 😟 Just really grateful for you, for the community and for the opportunity to serve. See you around then and sending big love and virtual hugs Mama Naomi! Praying you feel and get better day by day! 💗"
date: 18 April 2026
- name: Internal Feedback (Anonymised for privacy)
content: Hey, I just wanted to say how much I appreciated your presentation. I thought you addressed these sensitive topics in an elegant way that could help potential allies to stay open to the conversation and to make a real impact on the people in their lives. Especially as I'm someone who's pretty uncomfortable in the spotlight, I'm really grateful you were able to represent the things that are also on my mind so well. I admire that ability. Thank you for sharing.
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: "Hi, Naomi! I wanted to say nice job on your presentation today. It provided good context for me on how to be a good ally.\n\nI also appreciated your delivery style. Kudos, and happy Thursday to you!"
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: That was a great speech! Loved that it was so specific about what people can do. I happen to be wearing this shirt today. [My company] used to make pride shirts a couple of years back.
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: Great presentation and great job. I have tremendous respect for you, and thank you for giving [Our Pride ERG] a voice in townhall today.
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: AMAZING presentation Naomi! Thank you so much for taking the time to present and own this. You did such a great job of making the content human, not complex, not preachy but simple, practical, and affirming!
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: So thankful for this prez Naomi ❤️ appreciate you!!
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: Naomi for prez, you say? I'd vote for her.
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: Thanks so much Naomi, echoing everyone above, grateful for you and fantastic presentation 🌈 ❤️
date: 18 June 2026
- name: Internal Feedback (Anonymised for privacy)
content: Naomi for enthusiastically leading our developer communities, posting across channels and expertly growing our engagement, and for being so supportive of this launch all around.
date: 30 April 2026
- name: Internal Feedback (Anonymised for privacy)
content: "Uno reverse kudos right back to you, Naomi! Thank you for helping us audit the trigger issues you referenced so we could fix them before they became a bigger issue."
date: 4 May 2026
- name: Internal Feedback (Anonymised for privacy)
content: "Thank you Naomi - This is all AMAZING! Appreciate all of your hard work on this!!"
date: 8 June 2026
- name: LinkedIn User
content: We first heard about Deepgram at the Berkeley AI Hackathon. We wanted to build with it, ended up making it the core our project, and along the way met Naomi from the team, who hung out with us the entire night. That experience is a big part of why we decided to turn this into a company.
date: 23 June 2026
- name: Dat Nguyen
content: Huge thanks to the teams at Simular, QNX, and Deepgram, especially Naomi Carrigan, who hung out and talked with us the entire night as we stayed up.
date: 23 June 2026
- name: Anonymous
content: Thank you very much Naomi for being there for our team. We hope to stay in touch and we will keep working on making our product even better!
date: 24 June 2026
- name: night181
content: "Thanks, Naomi ~ ...your docs were clean - made the whole refinement a 10 minute one shot job for Opus 4.7 ♥"
date: 16 April 2026
- name: Tu Nguyen
content: "The Inspiration: Naomi Carrigan from Deepgram for walking me through the API (and for managing freeCodeCamp, a platform I've literally used since the beginning of my compsci journey!)."
date: 22 June 2026
- name: Aditya Nagpal
content: A special thanks to the best tabling out there Deepgram and Naomi Carrigan, hats off, the best discord server ever.
date: 23 June 2026
- name: Ethan Nguyen
content: A big thank you to Naomi Carrigan for being the last sponsor standing and giving me a clutch red bull at 12 am.
date: 23 June 2026
- name: Yash Sanghvi
content: A huge thank you to Devashree Shirude and Naomi Carrigan for judging, your feedback, and for making the UC Berkeley AI Hackathon such an incredible experience!
date: 24 June 2026
- name: Ethan Nguyen
content: You were the best, Naomi! Amazing experience talking to you throughout the night. Let's build together!
date: 24 June 2026
- name: Bryan Pham
content: Thank you for the kind words, Naomi! We're grateful for your willingness to support us throughout the hackathon, from our early ideation questions the night before all the way to the final hour. We're excited to show you the improvements we've been working on!
date: 24 June 2026
- name: Shresthkumar Karnani
content: And to Deepgram and Naomi Carrigan for great conversation at the booth.
date: 23 June 2026
-1
View File
@@ -140,7 +140,6 @@ const repoNameMap = {
"fcc-review-generator": "freeCodeCamp Review Generator",
"life-of-a-naomi": "Life of a Naomi",
"naomis-adventure-1": "Naomi's Adventure I: An Isekai Story",
"qr-generator": "QR Generator",
"ruu-goblin-quest": "Ruu's Goblin Quest",
"typescript-config": "TypeScript Config",
"vscode-themes": "Naomi's VSCode Themes",
+60 -1
View File
@@ -14,6 +14,28 @@ import type { Projects } from "../src/interfaces/projects.js";
import type { Resume } from "../src/interfaces/resume.js";
import type { Testimonials } from "../src/interfaces/testimonials.js";
const checkUrl = async(url: string): Promise<boolean> => {
try {
const response = await fetch(url, {
headers: { origin: url },
method: "HEAD",
});
if (response.status === 429) {
// Try again after few seconds
console.log(`Rate limited on ${url}, trying again...`);
await new Promise((resolve) => {
// eslint-disable-next-line no-promise-executor-return --- HUH???
return setTimeout(resolve, 5000);
});
return checkUrl(url);
}
return response.ok;
} catch (error) {
console.error(`Error checking URL ${url}:`, error);
return false;
}
};
describe("project data", () => {
it("should match the interface", async() => {
expect.hasAssertions();
@@ -68,15 +90,29 @@ describe("project data", () => {
project.name ?? "unknown"
}`,
).toBe("string");
await expect(
checkUrl(project.avatar),
`Project avatar should be reachable for project: ${
project.name ?? "unknown"
}`,
).resolves.toBeTruthy();
}
if (project.url) {
// We explicitly skip the VSCode url because it blocks our request.
if (project.url
&& !project.url.startsWith("https://marketplace.visualstudio.com")) {
expect(
typeof project.url,
`Project url should be a string for project: ${
project.name ?? "unknown"
}`,
).toBe("string");
await expect(
checkUrl(project.url),
`Project url should be reachable for project: ${
project.name ?? "unknown"
}`,
).resolves.toBeTruthy();
}
}
});
@@ -407,6 +443,13 @@ describe("donate data", () => {
method.name ?? "unknown method"
}`,
).toBe("string");
await expect(
checkUrl(method.url),
`Donation method url should be reachable for ${
method.name ?? "unknown method"
}`,
).resolves.toBeTruthy();
}
});
});
@@ -458,6 +501,10 @@ describe("funding data", () => {
typeof parsed.entity.webpageUrl.url,
`Funding entity webpageUrl.url should be a string`,
).toBe("string");
await expect(
checkUrl(parsed.entity.webpageUrl.url),
`Funding entity webpageUrl.url should be reachable`,
).resolves.toBeTruthy();
if (parsed.entity.webpageUrl.wellKnown) {
expect(
@@ -504,6 +551,12 @@ describe("funding data", () => {
project.name ?? "unknown"
}`,
).toBe("string");
await expect(
checkUrl(project.webpageUrl.url),
`Funding project webpageUrl.url should be reachable for project: ${
project.name ?? "unknown"
}`,
).resolves.toBeTruthy();
if (project.webpageUrl.wellKnown) {
expect(
typeof project.webpageUrl.wellKnown,
@@ -524,6 +577,12 @@ describe("funding data", () => {
project.name ?? "unknown"
}`,
).toBe("string");
await expect(
checkUrl(project.repositoryUrl.url),
`Funding project repositoryUrl.url should be reachable for project: ${
project.name ?? "unknown"
}`,
).resolves.toBeTruthy();
if (project.repositoryUrl.wellKnown) {
expect(
typeof project.repositoryUrl.wellKnown,