diff --git a/apps/web/content-collections.ts b/apps/web/content-collections.ts index fad8dcb0c..ccdaa9f14 100644 --- a/apps/web/content-collections.ts +++ b/apps/web/content-collections.ts @@ -492,6 +492,28 @@ const roadmap = defineCollection({ }, }); +const ossFriends = defineCollection({ + name: "ossFriends", + directory: "content/oss-friends", + include: "*.mdx", + exclude: "AGENTS.md", + schema: z.object({ + name: z.string(), + description: z.string(), + href: z.string(), + image: z.string().optional(), + github: z.string(), + }), + transform: async (document) => { + const slug = document._meta.path.replace(/\.mdx$/, ""); + + return { + ...document, + slug, + }; + }, +}); + const handbook = defineCollection({ name: "handbook", directory: "content/handbook", @@ -566,5 +588,6 @@ export default defineConfig({ vs, handbook, roadmap, + ossFriends, ], }); diff --git a/apps/web/content/oss-friends/cal.mdx b/apps/web/content/oss-friends/cal.mdx new file mode 100644 index 000000000..4a31e1adb --- /dev/null +++ b/apps/web/content/oss-friends/cal.mdx @@ -0,0 +1,7 @@ +--- +name: Cal.com +description: Open source scheduling infrastructure. The open source Calendly alternative. +href: https://cal.com +github: https://github.com/calcom/cal.com +image: https://cal.com/og-image.jpg +--- diff --git a/apps/web/content/oss-friends/documenso.mdx b/apps/web/content/oss-friends/documenso.mdx new file mode 100644 index 000000000..44a15560f --- /dev/null +++ b/apps/web/content/oss-friends/documenso.mdx @@ -0,0 +1,7 @@ +--- +name: Documenso +description: Open source document signing. The open source DocuSign alternative. +href: https://documenso.com +github: https://github.com/documenso/documenso +image: https://framerusercontent.com/images/x66EcGbzu3IQEriNXuRmOBonGyo.png +--- diff --git a/apps/web/content/oss-friends/dub.mdx b/apps/web/content/oss-friends/dub.mdx new file mode 100644 index 000000000..65182ec6a --- /dev/null +++ b/apps/web/content/oss-friends/dub.mdx @@ -0,0 +1,7 @@ +--- +name: Dub +description: Open source link management. Create, share, and track short links with analytics. +href: https://dub.co +github: https://github.com/dubinc/dub +image: https://assets.dub.co/thumbnail.jpg +--- diff --git a/apps/web/content/oss-friends/eraser.mdx b/apps/web/content/oss-friends/eraser.mdx new file mode 100644 index 000000000..1dfc6d92b --- /dev/null +++ b/apps/web/content/oss-friends/eraser.mdx @@ -0,0 +1,7 @@ +--- +name: Eraser +description: The whiteboard for engineering teams. Create diagrams and documentation together. +href: https://eraser.io +github: https://github.com/eraser-io +image: https://cdn.prod.website-files.com/62d58a323cbc396f06a780aa/6703e77bae3793673a054a4b_eraser-og-image.avif +--- diff --git a/apps/web/content/oss-friends/formbricks.mdx b/apps/web/content/oss-friends/formbricks.mdx new file mode 100644 index 000000000..ecc34d495 --- /dev/null +++ b/apps/web/content/oss-friends/formbricks.mdx @@ -0,0 +1,7 @@ +--- +name: Formbricks +description: Open source experience management. Create in-app surveys and collect feedback. +href: https://formbricks.com +github: https://github.com/formbricks/formbricks +image: https://formbricks.com/api/og +--- diff --git a/apps/web/content/oss-friends/hanko.mdx b/apps/web/content/oss-friends/hanko.mdx new file mode 100644 index 000000000..ad75366b3 --- /dev/null +++ b/apps/web/content/oss-friends/hanko.mdx @@ -0,0 +1,6 @@ +--- +name: Hanko +description: Open source authentication. Passwordless auth with passkeys and WebAuthn. +href: https://hanko.io +github: https://github.com/teamhanko/hanko +--- diff --git a/apps/web/content/oss-friends/inbox-zero.mdx b/apps/web/content/oss-friends/inbox-zero.mdx new file mode 100644 index 000000000..49cfe17e5 --- /dev/null +++ b/apps/web/content/oss-friends/inbox-zero.mdx @@ -0,0 +1,7 @@ +--- +name: Inbox Zero +description: Open source email management. Clean up your inbox and reach inbox zero fast. +href: https://getinboxzero.com +github: https://github.com/elie222/inbox-zero +image: https://www.getinboxzero.com/opengraph-image.png +--- diff --git a/apps/web/content/oss-friends/infisical.mdx b/apps/web/content/oss-friends/infisical.mdx new file mode 100644 index 000000000..c9f275c3f --- /dev/null +++ b/apps/web/content/oss-friends/infisical.mdx @@ -0,0 +1,7 @@ +--- +name: Infisical +description: Open source secret management. Sync secrets across your team and infrastructure. +href: https://infisical.com +github: https://github.com/Infisical/infisical +image: https://infisical.com/images/message.png +--- diff --git a/apps/web/content/oss-friends/logto.mdx b/apps/web/content/oss-friends/logto.mdx new file mode 100644 index 000000000..e1df72afb --- /dev/null +++ b/apps/web/content/oss-friends/logto.mdx @@ -0,0 +1,7 @@ +--- +name: Logto +description: Modern auth infrastructure for developers. Add multi-tenancy, enterprise SSO, and RBAC to your SaaS with OIDC and OAuth 2.1 made simple. +href: https://logto.io +github: https://github.com/logto-io/logto +image: https://logto.io/assets/social-CH_XwNBP.jpg +--- diff --git a/apps/web/content/oss-friends/n8n.mdx b/apps/web/content/oss-friends/n8n.mdx new file mode 100644 index 000000000..ca5e36588 --- /dev/null +++ b/apps/web/content/oss-friends/n8n.mdx @@ -0,0 +1,7 @@ +--- +name: n8n +description: Open source workflow automation platform. Build AI agents and automate tasks with code or drag-and-drop. Self-host or use the cloud with 500+ integrations. +href: https://n8n.io +github: https://github.com/n8n-io/n8n +image: https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/og_image_website_3_afd66761a9_017b94d87b.png +--- diff --git a/apps/web/content/oss-friends/novu.mdx b/apps/web/content/oss-friends/novu.mdx new file mode 100644 index 000000000..c37bedb47 --- /dev/null +++ b/apps/web/content/oss-friends/novu.mdx @@ -0,0 +1,7 @@ +--- +name: Novu +description: Open source notification infrastructure. Add a powerful notification inbox to your app with multi-channel delivery including email, SMS, push, and in-app. +href: https://novu.co +github: https://github.com/novuhq/novu +image: https://novu.co/images/social-preview.jpg +--- \ No newline at end of file diff --git a/apps/web/content/oss-friends/openstatus.mdx b/apps/web/content/oss-friends/openstatus.mdx new file mode 100644 index 000000000..21a2e3bfd --- /dev/null +++ b/apps/web/content/oss-friends/openstatus.mdx @@ -0,0 +1,7 @@ +--- +name: OpenStatus +description: Open source monitoring platform. Monitor your APIs, websites, and cron jobs with ease. +href: https://www.openstatus.dev +github: https://github.com/openstatusHQ/openstatus +image: https://www.openstatus.dev/api/og +--- \ No newline at end of file diff --git a/apps/web/content/oss-friends/papermark.mdx b/apps/web/content/oss-friends/papermark.mdx new file mode 100644 index 000000000..0eec0f2f9 --- /dev/null +++ b/apps/web/content/oss-friends/papermark.mdx @@ -0,0 +1,7 @@ +--- +name: Papermark +description: Open source DocSend alternative. Share documents with real-time analytics. +href: https://papermark.io +github: https://github.com/mfts/papermark +image: https://www.papermark.com/_static/meta-image.png +--- diff --git a/apps/web/content/oss-friends/plausible.mdx b/apps/web/content/oss-friends/plausible.mdx new file mode 100644 index 000000000..ad80e06cb --- /dev/null +++ b/apps/web/content/oss-friends/plausible.mdx @@ -0,0 +1,7 @@ +--- +name: Plausible +description: Privacy-friendly Google Analytics alternative. Lightweight, cookie-free analytics with simple metrics and intuitive dashboards. Made and hosted in the EU. +href: https://plausible.io +github: https://github.com/plausible/analytics +image: https://plausible.io/assets/images/plausible_promo.jpg +--- diff --git a/apps/web/content/oss-friends/posthog.mdx b/apps/web/content/oss-friends/posthog.mdx new file mode 100644 index 000000000..5ce190033 --- /dev/null +++ b/apps/web/content/oss-friends/posthog.mdx @@ -0,0 +1,7 @@ +--- +name: PostHog +description: Open source product analytics platform. All-in-one suite with session replay, feature flags, experiments, and surveys for product engineers. +href: https://posthog.com +github: https://github.com/posthog/posthog +image: https://posthog.com/images/og/default.png +--- diff --git a/apps/web/content/oss-friends/supabase.mdx b/apps/web/content/oss-friends/supabase.mdx new file mode 100644 index 000000000..ed0106495 --- /dev/null +++ b/apps/web/content/oss-friends/supabase.mdx @@ -0,0 +1,7 @@ +--- +name: Supabase +description: Open source Postgres development platform. Build your backend with a Postgres database, Authentication, instant APIs, Edge Functions, and Realtime subscriptions. +href: https://supabase.com +github: https://github.com/supabase/supabase +image: https://supabase.com/images/og/supabase-og.png +--- \ No newline at end of file diff --git a/apps/web/content/oss-friends/trigger.mdx b/apps/web/content/oss-friends/trigger.mdx new file mode 100644 index 000000000..4df533765 --- /dev/null +++ b/apps/web/content/oss-friends/trigger.mdx @@ -0,0 +1,7 @@ +--- +name: Trigger.dev +description: Open source background jobs. Create long-running jobs directly in your codebase. +href: https://trigger.dev +github: https://github.com/triggerdotdev/trigger.dev +image: https://trigger.dev/build/_assets/og-image-FUCLNVIV.jpg +--- diff --git a/apps/web/content/oss-friends/twenty.mdx b/apps/web/content/oss-friends/twenty.mdx new file mode 100644 index 000000000..24f7feb2b --- /dev/null +++ b/apps/web/content/oss-friends/twenty.mdx @@ -0,0 +1,7 @@ +--- +name: Twenty +description: Open source CRM platform. Modern, powerful alternative to Salesforce with customizable data models, workflows, and permissions for managing customer relationships. +href: https://twenty.com +github: https://github.com/twentyhq/twenty +image: https://framerusercontent.com/assets/H7wGkHoAi1Dohc6jXriJzfrZ0EU.png +--- diff --git a/apps/web/content/oss-friends/unkey.mdx b/apps/web/content/oss-friends/unkey.mdx new file mode 100644 index 000000000..715ae12be --- /dev/null +++ b/apps/web/content/oss-friends/unkey.mdx @@ -0,0 +1,6 @@ +--- +name: Unkey +description: Open source API key management. Build better APIs with authentication and rate limiting. +href: https://unkey.dev +github: https://github.com/unkey/unkey +--- diff --git a/apps/web/src/routeTree.gen.ts b/apps/web/src/routeTree.gen.ts index dc2b07167..bd36ffcdc 100644 --- a/apps/web/src/routeTree.gen.ts +++ b/apps/web/src/routeTree.gen.ts @@ -26,6 +26,7 @@ import { Route as ApiTemplatesRouteImport } from './routes/api/templates' import { Route as ViewSecurityRouteImport } from './routes/_view/security' import { Route as ViewPricingRouteImport } from './routes/_view/pricing' import { Route as ViewPressKitRouteImport } from './routes/_view/press-kit' +import { Route as ViewOssFriendsRouteImport } from './routes/_view/oss-friends' import { Route as ViewOpensourceRouteImport } from './routes/_view/opensource' import { Route as ViewFreeRouteImport } from './routes/_view/free' import { Route as ViewFileTranscriptionRouteImport } from './routes/_view/file-transcription' @@ -172,6 +173,11 @@ const ViewPressKitRoute = ViewPressKitRouteImport.update({ path: '/press-kit', getParentRoute: () => ViewRouteRoute, } as any) +const ViewOssFriendsRoute = ViewOssFriendsRouteImport.update({ + id: '/oss-friends', + path: '/oss-friends', + getParentRoute: () => ViewRouteRoute, +} as any) const ViewOpensourceRoute = ViewOpensourceRouteImport.update({ id: '/opensource', path: '/opensource', @@ -506,6 +512,7 @@ export interface FileRoutesByFullPath { '/file-transcription': typeof ViewFileTranscriptionRoute '/free': typeof ViewFreeRoute '/opensource': typeof ViewOpensourceRoute + '/oss-friends': typeof ViewOssFriendsRoute '/press-kit': typeof ViewPressKitRouteWithChildren '/pricing': typeof ViewPricingRoute '/security': typeof ViewSecurityRoute @@ -582,6 +589,7 @@ export interface FileRoutesByTo { '/file-transcription': typeof ViewFileTranscriptionRoute '/free': typeof ViewFreeRoute '/opensource': typeof ViewOpensourceRoute + '/oss-friends': typeof ViewOssFriendsRoute '/press-kit': typeof ViewPressKitRouteWithChildren '/pricing': typeof ViewPricingRoute '/security': typeof ViewSecurityRoute @@ -663,6 +671,7 @@ export interface FileRoutesById { '/_view/file-transcription': typeof ViewFileTranscriptionRoute '/_view/free': typeof ViewFreeRoute '/_view/opensource': typeof ViewOpensourceRoute + '/_view/oss-friends': typeof ViewOssFriendsRoute '/_view/press-kit': typeof ViewPressKitRouteWithChildren '/_view/pricing': typeof ViewPricingRoute '/_view/security': typeof ViewSecurityRoute @@ -744,6 +753,7 @@ export interface FileRouteTypes { | '/file-transcription' | '/free' | '/opensource' + | '/oss-friends' | '/press-kit' | '/pricing' | '/security' @@ -820,6 +830,7 @@ export interface FileRouteTypes { | '/file-transcription' | '/free' | '/opensource' + | '/oss-friends' | '/press-kit' | '/pricing' | '/security' @@ -900,6 +911,7 @@ export interface FileRouteTypes { | '/_view/file-transcription' | '/_view/free' | '/_view/opensource' + | '/_view/oss-friends' | '/_view/press-kit' | '/_view/pricing' | '/_view/security' @@ -1099,6 +1111,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ViewPressKitRouteImport parentRoute: typeof ViewRouteRoute } + '/_view/oss-friends': { + id: '/_view/oss-friends' + path: '/oss-friends' + fullPath: '/oss-friends' + preLoaderRoute: typeof ViewOssFriendsRouteImport + parentRoute: typeof ViewRouteRoute + } '/_view/opensource': { id: '/_view/opensource' path: '/opensource' @@ -1602,6 +1621,7 @@ interface ViewRouteRouteChildren { ViewFileTranscriptionRoute: typeof ViewFileTranscriptionRoute ViewFreeRoute: typeof ViewFreeRoute ViewOpensourceRoute: typeof ViewOpensourceRoute + ViewOssFriendsRoute: typeof ViewOssFriendsRoute ViewPressKitRoute: typeof ViewPressKitRouteWithChildren ViewPricingRoute: typeof ViewPricingRoute ViewSecurityRoute: typeof ViewSecurityRoute @@ -1658,6 +1678,7 @@ const ViewRouteRouteChildren: ViewRouteRouteChildren = { ViewFileTranscriptionRoute: ViewFileTranscriptionRoute, ViewFreeRoute: ViewFreeRoute, ViewOpensourceRoute: ViewOpensourceRoute, + ViewOssFriendsRoute: ViewOssFriendsRoute, ViewPressKitRoute: ViewPressKitRouteWithChildren, ViewPricingRoute: ViewPricingRoute, ViewSecurityRoute: ViewSecurityRoute, diff --git a/apps/web/src/routes/_view/oss-friends.tsx b/apps/web/src/routes/_view/oss-friends.tsx new file mode 100644 index 000000000..19c8a91a5 --- /dev/null +++ b/apps/web/src/routes/_view/oss-friends.tsx @@ -0,0 +1,190 @@ +import { Icon } from "@iconify-icon/react"; +import { createFileRoute } from "@tanstack/react-router"; +import { allOssFriends } from "content-collections"; + +import { cn } from "@hypr/utils"; + +import { Image } from "@/components/image"; +import { SlashSeparator } from "@/components/slash-separator"; + +export const Route = createFileRoute("/_view/oss-friends")({ + component: Component, + head: () => ({ + meta: [ + { title: "OSS Friends - Hyprnote" }, + { + name: "description", + content: + "Discover amazing open source projects and tools built by our friends in the community. Hyprnote is proud to be part of the open source ecosystem.", + }, + { property: "og:title", content: "OSS Friends - Hyprnote" }, + { + property: "og:description", + content: + "Discover amazing open source projects and tools built by our friends in the community.", + }, + { property: "og:type", content: "website" }, + { + property: "og:url", + content: "https://hyprnote.com/oss-friends", + }, + { name: "twitter:card", content: "summary_large_image" }, + { name: "twitter:title", content: "OSS Friends - Hyprnote" }, + { + name: "twitter:description", + content: + "Discover amazing open source projects and tools built by our friends in the community.", + }, + ], + }), +}); + +function Component() { + return ( +
+ Discover amazing open source projects and tools built by our friends + in the community. We believe in the power of open source and are + proud to be part of this ecosystem. +
++ {friend.description} +
+ e.stopPropagation()} + className="inline-flex items-center gap-1.5 text-xs text-neutral-500 hover:text-neutral-700 transition-colors" + > ++ If you're building an open source project and would like to be + featured on this page, we'd love to hear from you. +
+ +