Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
2fb4c7b
feat: update UserService import path to new edition structure
Nov 14, 2025
2c0f2f3
feat: update user handling logic in UserService for improved data man…
Nov 14, 2025
066d44d
feat: render ApplicationUsersPage in the main Page component
Nov 14, 2025
551c4cc
feat: create initial Page component with empty render
Nov 14, 2025
b28b0b2
feat: adjust user index handling in UserService for correct data mapping
Nov 15, 2025
84b393c
feat: create Page component with initial null render
Nov 15, 2025
3a65c05
feat: implement ApplicationUsersPage component for user management
Nov 15, 2025
9667117
feat: update user badge count in ApplicationTabView to reflect dynami…
Nov 15, 2025
df33f6b
feat: remove unused Block button from user list in ApplicationUsersPage
Nov 15, 2025
5d20b9a
feat: update @code0-tech/pictor and @code0-tech/sagittarius-graphql-t…
Nov 16, 2025
17027f4
feat: refactor ApplicationUsersPage to use DUserList and remove unuse…
Nov 16, 2025
688fa74
feat: add userAbilities field to User fragments for enhanced user per…
Nov 16, 2025
8079833
feat: add __typename field to User fragments for improved type identi…
Nov 16, 2025
ee635dc
feat: remove unused getById method from User service
Nov 16, 2025
de245ed
feat: add Organization service and GraphQL operations for managing or…
Nov 16, 2025
cef2f10
feat: add OrganizationId fragment for improved type identification in…
Nov 16, 2025
77385c2
feat: add create and delete mutations for organizations in GraphQL
Nov 16, 2025
1317db2
feat: refactor user service initialization in ApplicationLayout compo…
Nov 16, 2025
574db50
feat: add ApplicationOrganizationCreatePage for creating new organiza…
Nov 16, 2025
2573018
feat: add ApplicationOrganizationPage for displaying and managing org…
Nov 16, 2025
66355a2
feat: enhance ApplicationLayout with organization, member, and namesp…
Nov 16, 2025
b6fce2a
feat: add MemberService and NamespaceService for managing members and…
Nov 16, 2025
2e5347d
feat: import Organization fragment in create and query mutations
Nov 16, 2025
ac23b3f
feat: implement organization creation and query functionality in Orga…
Nov 16, 2025
90f0b80
feat: implement organization creation page in the application
Nov 16, 2025
7f870e1
feat: standardize error handling in GraphQL mutations
Nov 18, 2025
b98d9fc
feat: refactor service initialization to use memoization and callbacks
Nov 18, 2025
56cf670
feat: simplify error handling in Apollo client and improve logging in…
Nov 18, 2025
f181652
feat: adjust layout component to include z-index styling for top content
Nov 18, 2025
05aa71b
feat: implement persistent reactive array service for user, organizat…
Nov 18, 2025
7f4eefd
feat: streamline imports and enhance readability in layout component
Nov 18, 2025
bda1e03
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.16
Nov 18, 2025
4e37374
feat: update persistent reactive array service keys for dashboard com…
Nov 18, 2025
f914331
feat: add suppressHydrationWarning to html element in layout component
Nov 18, 2025
eb30f6e
feat: optimize user data indexing in User.service
Nov 18, 2025
e3e11be
feat: simplify user iteration in User.service by removing unnecessary…
Nov 18, 2025
b81ed1d
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.17
Nov 19, 2025
e5a2c14
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.18
Nov 19, 2025
cdad783
feat: enable client-side rendering in default.ts
Nov 19, 2025
a855038
feat: update persistent reactive array service keys to include curren…
Nov 19, 2025
bf759a3
feat: add GraphQL mutation files for create and delete operations
Nov 19, 2025
28759fc
feat: add GraphQL fragment for Runtime entity
Nov 19, 2025
b9882cc
feat: add GraphQL query for fetching global runtimes with pagination
Nov 19, 2025
0eaa82a
feat: add GraphQL fragment for Runtime ID
Nov 19, 2025
2c554cd
feat: add GraphQL query for fetching runtimes by namespace with pagin…
Nov 19, 2025
145349a
feat: add GraphQL mutation for rotating runtime tokens
Nov 19, 2025
3389353
feat: implement RuntimeService for managing global and namespace runt…
Nov 19, 2025
c2444c0
feat: add ApplicationRuntimePage component for displaying global runt…
Nov 20, 2025
185ced6
feat: update default tab selection to include runtimes in Application…
Nov 20, 2025
2e6fb29
feat: create default page component to render ApplicationTabView
Nov 20, 2025
8c4d89b
feat: add runtime service to ApplicationLayout for managing global ru…
Nov 20, 2025
63aa948
feat: render ApplicationRuntimePage in the main Page component
Nov 20, 2025
86ece59
feat: import Runtime fragment in global query for improved data handling
Nov 20, 2025
49b4eef
feat: import Runtime fragment in NamespaceRuntimes query for enhanced…
Nov 20, 2025
84673bd
feat: update Runtime service to use local query imports and add pagin…
Nov 20, 2025
321ffca
feat: update ApplicationRuntimePage to link to runtime creation inste…
Nov 20, 2025
c657d34
feat: add RuntimeCreatePage component to the main Page
Nov 20, 2025
d64fb76
feat: add RuntimeBasic fragment for enhanced runtime data handling
Nov 20, 2025
1fe1b85
feat: add runtimeCreate mutation for creating new runtimes with basic…
Nov 20, 2025
75f80b8
feat: implement runtimeCreate method for creating new runtimes
Nov 20, 2025
37ef63c
feat: add RuntimeCreatePage component for creating global runtimes
Nov 20, 2025
d0bde98
feat: create initial Page component with a null return
Nov 20, 2025
2b68f87
feat: create Page component with a null return
Nov 20, 2025
692a697
feat: update runtimeCreate mutation and refine Runtime fragment
Nov 20, 2025
ef061cf
feat: add comment to clarify data retrieval in Runtime fragment
Nov 20, 2025
ca99f77
feat: add Namespace fragments and service method for fetching by ID
Nov 20, 2025
feea1a9
feat: remove unused import from Namespace.service.ts
Nov 20, 2025
3a361ce
feat: simplify queries by removing unused parameters from Runtime que…
Nov 20, 2025
cd19959
feat: add mutation for assigning roles to members
Nov 20, 2025
ce203fd
feat: remove unused status field from Runtime fragment
Nov 20, 2025
59a0b8d
feat: add mutation for deleting members
Nov 20, 2025
543300e
feat: add Member fragment for NamespaceMember with roles and user det…
Nov 20, 2025
43d2680
feat: add mutation for inviting new members
Nov 20, 2025
0744cca
feat: add query for fetching members in a namespace
Nov 20, 2025
95a98d6
feat: add namespaceId parameter to MemberService constructor
Nov 20, 2025
fa6ad68
feat: update ApplicationTabView to include runtime and organization s…
Nov 21, 2025
fc5404f
feat: update MemberService instantiation to include namespace ID for …
Nov 21, 2025
a8b4f70
feat: add pagination parameters for roles in Members query
Nov 21, 2025
6ef8c7d
feat: update button styling in Application tab for improved UI consis…
Nov 21, 2025
b8c971d
feat: add imports for User and Namespace fragments in Member fragment
Nov 21, 2025
63da3c5
feat: enhance MemberService with user-specific member retrieval and a…
Nov 21, 2025
3347180
feat: rename Member.query.graphql to Members.query.graphql and add fr…
Nov 21, 2025
c0cc1b0
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.19
Nov 21, 2025
35c52ba
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.20
Nov 22, 2025
600a15e
feat: refactor ApplicationOrganizationPage to use ApplicationOrganiza…
Nov 22, 2025
b6a9cef
feat: add ApplicationOrganizationView component for organization mana…
Nov 22, 2025
5797a5f
feat: add ApplicationPage component to integrate personal and organiz…
Nov 22, 2025
7db93e8
feat: add ApplicationPersonalProjectCreatePage for creating personal …
Nov 22, 2025
d2cae6c
feat: add ApplicationPersonalProjectView for displaying personal proj…
Nov 22, 2025
41a5e0b
feat: add Datatype service for managing data types
Nov 22, 2025
b76ce11
feat: add Flow service for managing workflow processes
Nov 22, 2025
ae4041a
feat: add Flowtype service for managing flow types
Nov 22, 2025
19a9fdb
feat: add Function service for managing functions
Nov 22, 2025
e1f4fe1
feat: simplify NamespaceLayout component by removing unnecessary div
Nov 22, 2025
6fbdee3
feat: add Project service to ApplicationLayout for managing projects
Nov 22, 2025
4e7198b
feat: refactor MemberService constructor to remove namespaceId parameter
Nov 22, 2025
c0f2940
feat: replace Page component with ApplicationPage for improved structure
Nov 22, 2025
94e4cc0
feat: add Project fragment for NamespaceProject with related fields
Nov 22, 2025
2dd8db1
feat: implement ProjectService for managing namespace projects
Nov 22, 2025
7cb22c4
feat: add Projects query for fetching projects in a namespace
Nov 22, 2025
8a5c5d0
feat: add RoleService for managing user roles and permissions
Nov 22, 2025
c8c70ec
feat: refactor RuntimeService to use DRuntimeDependencies and remove …
Nov 22, 2025
c365d83
feat: update navigation after project creation to redirect to home page
Nov 23, 2025
f790cc9
feat: remove personal projects tab from application view
Nov 23, 2025
e9130f4
feat: add mutation for creating a project with namespace support
Nov 23, 2025
1feb593
feat: implement project creation mutation with namespace support
Nov 23, 2025
b5d3b6f
feat: update logo images to reflect MVP branding
Nov 23, 2025
4b81626
feat: update @code0-tech/pictor dependency to version 0.0.0-mvp.21
Nov 23, 2025
ba8a27a
feat: render RuntimeSettingPage in the main application page
Nov 23, 2025
6c6bd64
feat: rename ApplicationRuntimePage to RuntimePage in the main applic…
Nov 23, 2025
700a07d
feat: add runtime deletion mutation to manage runtime instances
Nov 23, 2025
5e27632
feat: add runtimeRotateToken mutation for rotating runtime tokens
Nov 23, 2025
33ebd08
feat: implement runtime update, delete, and rotate token mutations
Nov 23, 2025
d2c8ecc
feat: add runtimeUpdate mutation for updating runtime details
Nov 23, 2025
5dac736
feat: rename ApplicationRuntimePage to RuntimePage and update routing…
Nov 23, 2025
b3a25d3
feat: add RuntimeSettingPage for managing runtime details and access
Nov 23, 2025
70e8bad
feat: enhance ApplicationTabView with runtime and organization stores
Nov 23, 2025
395c835
feat: update button text for creating global runtime in RuntimePage
Nov 23, 2025
b38b532
feat: rename and refactor application pages for consistency and clarity
Nov 23, 2025
a31ff61
feat: add admin access control to runtime and user management pages
Nov 23, 2025
bb03aec
feat: add ApplicationSettingsPage for managing application settings a…
Nov 23, 2025
343a289
feat: update DUserMenu to use Link for navigation to organizations
Nov 23, 2025
653f8f2
feat: enforce admin access control across multiple pages
Nov 23, 2025
88c78b7
feat: add status field to Runtime fragment for enhanced data represen…
Nov 23, 2025
2bc377b
feat: add email and emailVerifiedAt fields to User fragment for impro…
Nov 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"dependencies": {
"@apollo/client": "^4.0.9",
"@code0-tech/pictor": "^0.0.0-mvp.14",
"@code0-tech/pictor": "^0.0.0-mvp.21",
"graphql": "^16.12.0",
"graphql-tag": "^2.12.6",
"next": "16.0.1",
Expand Down
Binary file added public/CodeZero_App_MVP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/CodeZero_Banner_MVP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 5 additions & 13 deletions src/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,17 @@
"use client"

import {
Col,
Container,
ContextStoreProvider,
DFullScreen,
DUserView,
Flex,
Text,
useReactiveArrayService
} from "@code0-tech/pictor";
import {UserService} from "@core/user/User.service";
import {Col, Container, ContextStoreProvider, DFullScreen, DUserView, Flex, Text} from "@code0-tech/pictor";
import {UserService} from "@edition/user/User.service";
import {useApolloClient} from "@apollo/client/react";
import {GraphqlClient} from "@core/util/graphql-client";
import Image from "next/image";
import React from "react";
import {usePersistentReactiveArrayService} from "@/hooks/usePersistentReactiveArrayService";

export default function AuthLayout({children}: Readonly<{ children: React.ReactNode }>) {

const client = useApolloClient()
const [store, service] = useReactiveArrayService<DUserView, UserService>((store) => new UserService(new GraphqlClient(client), store))
const [store, service] = usePersistentReactiveArrayService<DUserView, UserService>("auth-users", (store) => new UserService(new GraphqlClient(client), store))

return (
<DFullScreen>
Expand Down Expand Up @@ -48,7 +40,7 @@ export default function AuthLayout({children}: Readonly<{ children: React.ReactN
gap: "1.3rem"
}}>
<Text>All rights reserved &copy; Code0 UG (haftungsbeschränkt)</Text>
<Image src={"/CodeZero_Banner_Transparent.png"} alt={"CodeZero Banner"} width={150} height={0}
<Image src={"/CodeZero_Banner_MVP.png"} alt={"CodeZero Banner"} width={150} height={0}
style={{width: '150px', height: 'auto'}}/>
</div>
</div>
Expand Down
22 changes: 12 additions & 10 deletions src/app/(dashboard)/@bar/default.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,23 @@
import {
Badge,
Breadcrumb,
Button, Container,
Button,
Container,
Flex,
MenuItem,
MenuSeparator,
Text,
TextInput, useService,
TextInput,
useService,
useUserSession
} from "@code0-tech/pictor";
import DUserMenu from "@code0-tech/pictor/dist/components/d-user/DUserMenu";
import {IconBuilding, IconInbox, IconLogout, IconSearch, IconSettings} from "@tabler/icons-react";
import React from "react";
import Image from "next/image";
import {UserService} from "@core/user/User.service";
import {UserService} from "@edition/user/User.service";
import {useRouter} from "next/navigation";
import Link from "next/link";

const Page = () => {

Expand Down Expand Up @@ -44,12 +47,11 @@ const Page = () => {
}

return <DUserMenu userId={currentSession.user?.id!!}>
<MenuItem>
<IconBuilding size={16}/>Organizations
</MenuItem>
<MenuItem>
<IconSettings size={16}/>Settings
</MenuItem>
<Link href={"/organizations"}>
<MenuItem>
<IconBuilding size={16}/>Organizations
</MenuItem>
</Link>
<MenuSeparator/>
<MenuItem onSelect={userLogout}>
<IconLogout size={16}/>Logout
Expand All @@ -61,7 +63,7 @@ const Page = () => {
<Flex style={{gap: "0.7rem", flexDirection: "column"}} py={0.7} w={"100%"}>
<Flex align={"center"} justify={"space-between"}>
<Flex align={"center"} style={{gap: "1.3rem"}}>
<Image src={"/CodeZero_App_Background_Colorful.png"} alt={"CodeZero Banner"} width={160} height={0}
<Image src={"/CodeZero_App_MVP.png"} alt={"CodeZero Banner"} width={160} height={0}
style={{width: '42px', height: 'auto'}}/>
<Breadcrumb>
<Text>Application</Text>
Expand Down
2 changes: 2 additions & 0 deletions src/app/(dashboard)/@tab/default.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"use client"

export default function Page() {
return null
}
10 changes: 10 additions & 0 deletions src/app/(dashboard)/@tab/runtimes/default.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"use client"

import React from "react";
import {ApplicationTabView} from "@edition/dashboard/application/ApplicationTabView";

const Page: React.FC = () => {
return <ApplicationTabView/>
}

export default Page
29 changes: 23 additions & 6 deletions src/app/(dashboard)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,22 @@ import {
Container,
ContextStoreProvider,
DLayout,
DNamespaceMemberView, DNamespaceProjectView,
DNamespaceView,
DOrganizationView, DRuntimeView,
DUserView,
useReactiveArrayService,
ReactiveArrayStore,
useUserSession
} from "@code0-tech/pictor";
import {UserService} from "@core/user/User.service";
import {UserService} from "@edition/user/User.service";
import {GraphqlClient} from "@core/util/graphql-client";
import {useRouter} from "next/navigation";
import {OrganizationService} from "@edition/organization/Organization.service";
import {MemberService} from "@edition/member/Member.service";
import {NamespaceService} from "@edition/namespace/Namespace.service";
import {usePersistentReactiveArrayService} from "@/hooks/usePersistentReactiveArrayService";
import {RuntimeService} from "@edition/runtime/Runtime.service";
import {ProjectService} from "@edition/project/Project.service";

interface ApplicationLayoutProps {
children: React.ReactNode
Expand All @@ -23,22 +32,30 @@ interface ApplicationLayoutProps {
const ApplicationLayout: React.FC<ApplicationLayoutProps> = ({children, bar, tab}) => {

const client = useApolloClient()
const [store, service] = useReactiveArrayService<DUserView, UserService>((store) => new UserService(new GraphqlClient(client), store))
const router = useRouter()
const currentSession = useUserSession()

const graphqlClient = React.useMemo(() => new GraphqlClient(client), [client])

const user = usePersistentReactiveArrayService<DUserView, UserService>(`dashboard::users::${currentSession?.id}`, (store: ReactiveArrayStore<DUserView>) => new UserService(graphqlClient, store))
const organization = usePersistentReactiveArrayService<DOrganizationView, OrganizationService>(`dashboard::organizations::${currentSession?.id}`, (store: ReactiveArrayStore<DOrganizationView>) => new OrganizationService(graphqlClient, store))
const member = usePersistentReactiveArrayService<DNamespaceMemberView, MemberService>(`dashboard::members::${currentSession?.id}`, (store: ReactiveArrayStore<DNamespaceMemberView>) => new MemberService(graphqlClient, store))
const namespace = usePersistentReactiveArrayService<DNamespaceView, NamespaceService>(`dashboard::namespaces::${currentSession?.id}`, (store: ReactiveArrayStore<DNamespaceView>) => new NamespaceService(graphqlClient, store))
const runtime = usePersistentReactiveArrayService<DRuntimeView, RuntimeService>(`dashboard::global_runtimes::${currentSession?.id}`, (store: ReactiveArrayStore<DRuntimeView>) => new RuntimeService(graphqlClient, store))
const project = usePersistentReactiveArrayService<DNamespaceProjectView, ProjectService>(`dashboard::projects::${currentSession?.id}`, (store: ReactiveArrayStore<DNamespaceProjectView>) => new ProjectService(graphqlClient, store))

if (currentSession === null) router.push("/login")

return <ContextStoreProvider services={[[store, service]]}>
<DLayout topContent={
return <ContextStoreProvider services={[user, organization, member, namespace, runtime, project]}>
<DLayout style={{zIndex: 0}} topContent={
<>
<div style={{background: "rgba(255,2552,255,.1)", borderBottom: "1px solid rgba(255,2552,255,.1)"}}>
{bar}
{tab}
</div>
</>
}>
<Container>
<Container h={"100%"} w={"100%"}>
{children}
</Container>
</DLayout>
Expand Down
4 changes: 1 addition & 3 deletions src/app/(dashboard)/namespace/[namespaceId]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ interface NamespaceLayoutProps {
}

const NamespaceLayout: React.FC<NamespaceLayoutProps> = ({children}) => {
return <div>
{children}
</div>
return children
}

export default NamespaceLayout
5 changes: 5 additions & 0 deletions src/app/(dashboard)/organizations/create/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {OrganizationCreatePage} from "@edition/dashboard/application/OrganizationCreatePage";

export default function Page() {
return <OrganizationCreatePage/>
}
4 changes: 3 additions & 1 deletion src/app/(dashboard)/organizations/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import {OrganizationsPage} from "@edition/dashboard/application/OrganizationsPage";

export default function Page() {
return null
return <OrganizationsPage/>
}
37 changes: 2 additions & 35 deletions src/app/(dashboard)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,43 +1,10 @@
"use client"

import {Button, Flex, Text} from "@code0-tech/pictor";
import {IconChevronDown, IconPlus} from "@tabler/icons-react";
import React from "react";
import {ApplicationPage} from "@edition/dashboard/application/ApplicationPage";

const Page = () => {

return <Flex style={{flexDirection: "column", gap: "1.3rem"}}>
<Flex justify={"space-between"} align={"center"}>
<Text size={"xl"} hierarchy={"primary"}>
Personal projects
</Text>
<Flex style={{gap: ".7rem"}} align={"center"}>
<Button>
Sort
<IconChevronDown size={16}/>
</Button>
<Button color={"success"}>
Create project
<IconPlus size={16}/>
</Button>
</Flex>
</Flex>
<Flex justify={"space-between"} align={"center"}>
<Text size={"xl"} hierarchy={"primary"}>
Organizations you joined
</Text>
<Flex style={{gap: ".7rem"}} align={"center"}>
<Button>
Sort
<IconChevronDown size={16}/>
</Button>
<Button color={"success"}>
Create organization
<IconPlus size={16}/>
</Button>
</Flex>
</Flex>
</Flex>
return <ApplicationPage/>
}

export default React.memo(Page);
5 changes: 5 additions & 0 deletions src/app/(dashboard)/runtimes/[runtimeId]/settings/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {RuntimeSettingPage} from "@edition/dashboard/application/RuntimeSettingPage";

export default function Page() {
return <RuntimeSettingPage/>
}
5 changes: 5 additions & 0 deletions src/app/(dashboard)/runtimes/create/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {RuntimeCreatePage} from "@edition/dashboard/application/RuntimeCreatePage";

export default function Page() {
return <RuntimeCreatePage/>
}
7 changes: 7 additions & 0 deletions src/app/(dashboard)/runtimes/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"use client"

import {RuntimesPage} from "@edition/dashboard/application/RuntimesPage";

export default function Page() {
return <RuntimesPage/>
}
Loading