A web-based console inspired by AWS and Google Cloud, built with Next.js, TypeScript, Tailwind CSS, DaisyUI, and Clerk for authentication and organization management.
- Next.js (App Router, TypeScript)
- Tailwind CSS
- DaisyUI
- Clerk (authentication & organization management)
- ESLint & Prettier (code quality)
src/
app/ # App Router pages and layouts
components/ # Reusable UI components (e.g., sidebar)
lib/ # Utility functions
- Install dependencies:
npm install
- Set up Clerk:
- Create a Clerk project at Clerk.dev
- Add your Clerk keys to
.env.localas per Clerk docs
- Run the development server:
npm run dev
- All code uses
snake_casefor identifiers. - Lint and format code with:
npm run lint npm run format
- Add new UI components to
src/components/. - Add utilities to
src/lib/.
MIT
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
This project now uses Apollo GraphQL for all API operations. The previous ElysiaJS REST API has been fully removed. All new development should use the GraphQL endpoint at /api/graphql.
- Install dependencies:
bun install
- Run the development server:
bun run dev
- Access the GraphQL endpoint:
- URL:
http://localhost:3000/api/graphql - Use tools like Apollo Studio Explorer or GraphiQL to interact.
- URL:
query {
tools {
id
name
description
created_at
calls {
id
input
output
}
}
}mutation {
create_tool(name: "Example Tool", description: "A demo tool") {
id
name
description
created_at
}
}mutation {
create_call(tool_id: 1, input: "input data", output: "output data") {
id
tool_id
input
output
created_at
}
}- The ElysiaJS REST API has been fully removed. All business logic has been migrated to GraphQL.
- API key authentication is currently mocked; implement real auth as needed.
- All identifiers use snake_case for consistency.
- Add unit and integration tests for resolvers and schema as needed.
- Follow snake_case naming.
- Document all new queries/mutations.
- Use best practices for security and performance.