diff --git a/public/github-logo.png b/public/github-logo.png new file mode 100644 index 0000000..e28a837 Binary files /dev/null and b/public/github-logo.png differ diff --git a/src/app/page.tsx b/src/app/page.tsx index cddd761..67ea22b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -4,6 +4,10 @@ import { Input } from '@/components/ui/input'; import { Separator } from '@/components/ui/separator'; export default async function Home() { + + const response = await fetch("https://api.github.com/users/markusthielker") + const profile = await response.json() as PublicUser + return (
@@ -24,6 +28,143 @@ export default async function Home() { +
+ + { /* heading */} +
+

Markus Thielker

+

Software Engineer

+
+ + { /* card grid */} +
+
+ + { /* images */} + +
+ Portrait of Markus Thielker +
+
+ Portrait of Markus Thielker +
+
+ Portrait of Markus Thielker +
+
+ + { /* GitHub */} + + + +
+ GitHub + GitHub +
+
+
+ {profile.name} + {profile.followers} Followers +
+ {profile.bio} +
+
+
+ + + { /* age */} + + + + Age + + + + 23 Jahre + 04. März 2001 + + + + { /* employer */} + + + + Employer + + + + Looking for employment + + + + { /* TODO */} + + + +
+
+ + { /* search results */} +
+
+ + + + +
+
+
+
); } diff --git a/src/lib/github-user.ts b/src/lib/github-user.ts new file mode 100644 index 0000000..304a849 --- /dev/null +++ b/src/lib/github-user.ts @@ -0,0 +1,108 @@ +export type GithubUser = PrivateUser | PublicUser + +/** + * Private User + */ +export interface PrivateUser { + login: string + id: number + user_view_type?: string + node_id: string + avatar_url: string + gravatar_id: string | null + url: string + html_url: string + followers_url: string + following_url: string + gists_url: string + starred_url: string + subscriptions_url: string + organizations_url: string + repos_url: string + events_url: string + received_events_url: string + type: string + site_admin: boolean + name: string | null + company: string | null + blog: string | null + location: string | null + email: string | null + notification_email?: string | null + hireable: boolean | null + bio: string | null + twitter_username?: string | null + public_repos: number + public_gists: number + followers: number + following: number + created_at: string + updated_at: string + private_gists: number + total_private_repos: number + owned_private_repos: number + disk_usage: number + collaborators: number + two_factor_authentication: boolean + plan?: { + collaborators: number + name: string + space: number + private_repos: number + [k: string]: unknown + } + business_plus?: boolean + ldap_dn?: string + [k: string]: unknown +} +/** + * Public User + */ +export interface PublicUser { + login: string + id: number + user_view_type?: string + node_id: string + avatar_url: string + gravatar_id: string | null + url: string + html_url: string + followers_url: string + following_url: string + gists_url: string + starred_url: string + subscriptions_url: string + organizations_url: string + repos_url: string + events_url: string + received_events_url: string + type: string + site_admin: boolean + name: string | null + company: string | null + blog: string | null + location: string | null + email: string | null + notification_email?: string | null + hireable: boolean | null + bio: string | null + twitter_username?: string | null + public_repos: number + public_gists: number + followers: number + following: number + created_at: string + updated_at: string + plan?: { + collaborators: number + name: string + space: number + private_repos: number + [k: string]: unknown + } + private_gists?: number + total_private_repos?: number + owned_private_repos?: number + disk_usage?: number + collaborators?: number +}