import { z } from 'zod'; import { MetricCard } from '~/app/(marketing)/open/metric-card'; import { SalaryBands } from '~/app/(marketing)/open/salary-bands'; import { CapTable } from './cap-table'; import { FundingRaised } from './funding-raised'; import { GithubMetric } from './gh-metrics'; import { TeamMembers } from './team-members'; export const revalidate = 86400; const ZGithubStatsResponse = z.object({ stargazers_count: z.number(), forks_count: z.number(), open_issues: z.number(), }); const ZMergedPullRequestsResponse = z.object({ total_count: z.number(), }); const ZStargazersLiveResponse = z.record( z.object({ stars: z.number(), forks: z.number(), mergedPRs: z.number(), openIssues: z.number(), }), ); export type StargazersType = z.infer; // const ZOpenPullRequestsResponse = ZMergedPullRequestsResponse; export default async function OpenPage() { const { forks_count: forksCount, open_issues: openIssues, stargazers_count: stargazersCount, } = await fetch('https://api.github.com/repos/documenso/documenso', { headers: { accept: 'application/vnd.github.v3+json', }, }) .then((res) => res.json()) .then((res) => ZGithubStatsResponse.parse(res)); const { total_count: mergedPullRequests } = await fetch( 'https://api.github.com/search/issues?q=repo:documenso/documenso/+is:pr+merged:>=2010-01-01&page=0&per_page=1', { headers: { accept: 'application/vnd.github.v3+json', }, }, ) .then((res) => res.json()) .then((res) => ZMergedPullRequestsResponse.parse(res)); const STARGAZERS_DATA = await fetch('https://stargrazer-live.onrender.com/api/stats', { headers: { accept: 'application/json', }, }) .then((res) => res.json()) .then((res) => ZStargazersLiveResponse.parse(res)); return (

Open Startup

All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you.

Where's the rest?

We're still working on getting all our metrics together. We'll update this page as soon as we have more to share.

); }