Move to infisical. Create local dev environment. Add ci gates. Modernize repo
Build and Push Next App / quality (push) Successful in 1m8s
Build and Push Next App / build-next (push) Successful in 2m59s

This commit is contained in:
Gabriel Brown committed 2026-06-21 14:04:02 -05:00
1 parent 86e2fdc82e
commit a12bf6071b
79 files changed
+1612 -42168

No files matched your search

-1
View File
@@ -1 +0,0 @@
[{"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/cta.tsx":"1","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/features.tsx":"2","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/hero.tsx":"3","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/index.tsx":"4","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/tech-stack.tsx":"5","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/buttons/gibs-auth.tsx":"6","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/buttons/index.tsx":"7","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/avatar-upload.tsx":"8","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/header.tsx":"9","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/index.tsx":"10","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/reset-password.tsx":"11","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/sign-out.tsx":"12","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/user-info.tsx":"13","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/footer/index.tsx":"14","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/header/controls/AvatarDropdown.tsx":"15","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/header/controls/index.tsx":"16","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/header/index.tsx":"17","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/providers/ConvexClientProvider.tsx":"18","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/providers/index.tsx":"19","/home/gib/Documents/Code/convex-monorepo/apps/next/src/instrumentation-client.ts":"20","/home/gib/Documents/Code/convex-monorepo/apps/next/src/instrumentation.ts":"21","/home/gib/Documents/Code/convex-monorepo/apps/next/src/lib/metadata.ts":"22","/home/gib/Documents/Code/convex-monorepo/apps/next/src/lib/proxy/ban-sus-ips.ts":"23","/home/gib/Documents/Code/convex-monorepo/apps/next/src/proxy.ts":"24","/home/gib/Documents/Code/convex-monorepo/apps/next/payload-types.ts":"25","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/forgot-password/layout.tsx":"26","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/forgot-password/page.tsx":"27","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/profile/layout.tsx":"28","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/profile/page.tsx":"29","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/sign-in/layout.tsx":"30","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/(auth)/sign-in/page.tsx":"31","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/global-error.tsx":"32","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/layout.tsx":"33","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(frontend)/page.tsx":"34","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/admin/[[...segments]]/not-found.tsx":"35","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/admin/[[...segments]]/page.tsx":"36","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/admin/importMap.js":"37","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/api/[...slug]/route.ts":"38","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/api/graphql/route.ts":"39","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/api/graphql-playground/route.ts":"40","/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/layout.tsx":"41","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/content.ts":"42","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/faq.tsx":"43","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/logo-cloud.tsx":"44","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/page-builder.tsx":"45","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/pricing.tsx":"46","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/stats.tsx":"47","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/testimonials.tsx":"48","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/header/navigation.tsx":"49","/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/payload/refresh-route-on-save.tsx":"50","/home/gib/Documents/Code/convex-monorepo/apps/next/src/lib/payload/get-landing-page-content.ts":"51","/home/gib/Documents/Code/coLine truncated
-1
View File
@@ -1 +0,0 @@
[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81"],{"key":"82","value":"83"},{"key":"84","value":"85"},{"key":"86","value":"87"},{"key":"88","value":"89"},{"key":"90","value":"91"},{"key":"92","value":"93"},{"key":"94","value":"95"},{"key":"96","value":"97"},{"key":"98","value":"99"},{"key":"100","value":"101"},{"key":"102","value":"103"},{"key":"104","value":"105"},{"key":"106","value":"107"},{"key":"108","value":"109"},{"key":"110","value":"111"},{"key":"112","value":"113"},{"key":"114","value":"115"},{"key":"116","value":"117"},{"key":"118","value":"119"},{"key":"120","value":"121"},{"key":"122","value":"123"},{"key":"124","value":"125"},{"key":"126","value":"127"},{"key":"128","value":"129"},{"key":"130","value":"131"},{"key":"132","value":"133"},{"key":"134","value":"135"},{"key":"136","value":"137"},{"key":"138","value":"139"},{"key":"140","value":"141"},{"key":"142","value":"143"},{"key":"144","value":"145"},{"key":"146","value":"147"},{"key":"148","value":"149"},{"key":"150","value":"151"},{"key":"152","value":"153"},{"key":"154","value":"155"},{"key":"156","value":"157"},{"key":"158","value":"159"},{"key":"160","value":"161"},{"key":"162","value":"163"},{"key":"164","value":"165"},{"key":"166","value":"167"},{"key":"168","value":"169"},{"key":"170","value":"171"},{"key":"172","value":"173"},{"key":"174","value":"175"},{"key":"176","value":"177"},{"key":"178","value":"179"},{"key":"180","value":"181"},{"key":"182","value":"183"},{"key":"184","value":"185"},{"key":"186","value":"187"},{"key":"188","value":"189"},{"key":"190","value":"191"},{"key":"192","value":"193"},{"key":"194","value":"195"},{"key":"196","value":"197"},{"key":"198","value":"199"},{"key":"200","value":"201"},{"key":"202","value":"203"},{"key":"204","value":"205"},{"key":"206","value":"207"},{"key":"208","value":"209"},{"key":"210","value":"211"},{"key":"212","value":"213"},{"key":"214","value":"215"},{"key":"216","value":"217"},{"key":"218","value":"219"},{"key":"220","value":"221"},{"key":"222","value":"223"},{"key":"224","value":"225"},{"key":"226","value":"227"},{"key":"228","value":"229"},{"key":"230","value":"231"},{"key":"232","value":"233"},{"key":"234","value":"235"},{"key":"236","value":"237"},{"key":"238","value":"239"},{"key":"240","value":"241"},{"key":"242","value":"243"},"/home/gib/Documents/Code/convex-monorepo/apps/next/public/misc/convex/convex-symbol-black.svg",{"size":948,"mtime":1717458243000,"hash":"244"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/header/controls/index.tsx",{"size":499,"mtime":1768372347633,"hash":"245","data":"246"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/buttons/gibs-auth.tsx",{"size":1081,"mtime":1768372347496,"hash":"247","data":"248"},"/home/gib/Documents/Code/convex-monorepo/apps/next/public/misc/convex/convex-wordmark-black.svg",{"size":3110,"mtime":1717458243000,"hash":"249"},"/home/gib/Documents/Code/convex-monorepo/apps/next/public/misc/gitea/gitea.svg",{"size":1844,"mtime":1747415494000,"hash":"250"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/sentry.server.config.ts",{"size":184,"mtime":1774546669448,"hash":"251","data":"252"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/layout/auth/profile/reset-password.tsx",{"size":5681,"mtime":1768372347569,"hash":"253","data":"254"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/app/(payload)/api/[...slug]/route.ts",{"size":561,"mtime":1774715746548,"data":"255"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/logo-cloud.tsx",{"size":1142,"mtime":1774603139720,"data":"256"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/payload.config.ts",{"size":614,"mtime":1774716796806,"data":"257"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/payload/globals/landing-page-blocks.ts",{"size":8875,"mtime":1774603243829,"data":"258"},"/home/gib/Documents/Code/convex-monorepo/apps/next/public/misc/convex/convex-symbol-color.svg",{"size":948,"mtime":1717458243000,"hash":"259"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/instrumentation-client.ts",{"size":982,"mtime":1774667904119,"hash":"260","data":"261"},"/home/gib/Documents/Code/convex-monorepo/apps/next/src/components/landing/tech-stack.tsx",{"size":1440,"mtime":1774601252818,"hash":"262","data":"263"},"/home/gib/Documents/Code/convex-monorepo/apps/next/public/favicon-light.png",{"size":14406,"mtime":1717458300000,"hash":"264"},"/home/gib/Documents/Code/convex-monorepo/apps/next/.cache/tsbuildinfo.json",{"size":1198363,"mtime":1774718095241,"hash":"265","data":"266"},"/home/gib/Documents/Code/conveLine truncated
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -6,7 +6,7 @@ import { reactConfig } from '@gib/eslint-config/react';
export default defineConfig(
{
ignores: ['.next/**'],
ignores: ['.next/**', 'payload-types.ts'],
},
baseConfig,
reactConfig,
+10 -3
View File
@@ -5,7 +5,7 @@
"private": true,
"scripts": {
"build": "bun with-env next build",
"build:env": "bun with-env next build",
"build:docker": "next build --webpack",
"clean": "git clean -xdf .cache .next .turbo node_modules",
"dev": "bun with-env next dev --turbo",
"dev:tunnel": "bun with-env next dev --turbo",
@@ -14,7 +14,10 @@
"lint": "eslint --flag unstable_native_nodejs_ts_config",
"start": "bun with-env next start",
"typecheck": "tsc --noEmit",
"with-env": "dotenv -e ../../.env --"
"test:unit": "NODE_ENV=test vitest run --project unit",
"test:integration": "NODE_ENV=test vitest run --project integration",
"test:component": "NODE_ENV=test vitest run --project component",
"with-env": "sh ../../scripts/with-env ${INFISICAL_ENV:-dev} --"
},
"dependencies": {
"@convex-dev/auth": "catalog:convex",
@@ -41,15 +44,19 @@
"@gib/prettier-config": "workspace:*",
"@gib/tailwind-config": "workspace:*",
"@gib/tsconfig": "workspace:*",
"@gib/vitest-config": "workspace:*",
"@testing-library/react": "catalog:test",
"@types/node": "catalog:",
"@types/react": "catalog:react19",
"@types/react-dom": "catalog:react19",
"baseline-browser-mapping": "^2.10.11",
"eslint": "catalog:",
"jsdom": "catalog:test",
"prettier": "catalog:",
"tailwindcss": "catalog:",
"tw-animate-css": "^1.4.0",
"typescript": "catalog:"
"typescript": "catalog:",
"vitest": "catalog:test"
},
"prettier": "@gib/prettier-config"
}
-1
View File
@@ -1,4 +1,3 @@
/* tslint:disable */
/* eslint-disable */
/**
* This file was automatically generated by Payload.
@@ -19,8 +19,7 @@ export const generateMetadata = (): Metadata => {
const ProfileLayout = async ({
children,
}: Readonly<{ children: React.ReactNode }>) => {
if (!(await isAuthenticatedNextjs()))
redirect('/sign-in');
if (!(await isAuthenticatedNextjs())) redirect('/sign-in');
return <>{children}</>;
};
export default ProfileLayout;
+1
View File
@@ -0,0 +1 @@
declare module '@payloadcms/next/css';
+11
View File
@@ -0,0 +1,11 @@
import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
const Greeting = ({ name }: { name: string }) => <p>Hello {name}</p>;
describe('component test harness', () => {
it('renders through jsdom and Testing Library', () => {
render(<Greeting name='world' />);
expect(screen.getByText('Hello world')).toBeInTheDocument();
});
});
@@ -0,0 +1,7 @@
import { describe, expect, it } from 'vitest';
describe('integration test harness', () => {
it('provides modern Node globals', () => {
expect(typeof globalThis.structuredClone).toBe('function');
});
});
+1
View File
@@ -0,0 +1 @@
import '@testing-library/jest-dom/vitest';
+7
View File
@@ -0,0 +1,7 @@
import { describe, expect, it } from 'vitest';
describe('unit test harness', () => {
it('executes isolated assertions', () => {
expect(1 + 1).toBe(2);
});
});
+13
View File
@@ -0,0 +1,13 @@
import { defineConfig } from 'vitest/config';
import { jsdomProject, nodeProject } from '@gib/vitest-config';
export default defineConfig({
test: {
projects: [
nodeProject('unit', ['tests/unit/**/*.test.{ts,tsx}']),
nodeProject('integration', ['tests/integration/**/*.test.{ts,tsx}']),
jsdomProject('component', ['tests/component/**/*.test.{ts,tsx}']),
],
},
});