mirror of
https://github.com/BartoszJarocki/cv.git
synced 2024-11-29 14:57:17 +03:00
Compare commits
5 Commits
73c4c9871e
...
0b28b8d46a
Author | SHA1 | Date | |
---|---|---|---|
|
0b28b8d46a | ||
|
e5e34c42ed | ||
|
2390a3a5f3 | ||
|
bfdb1d5d8b | ||
|
27b6a8bd29 |
@ -9,20 +9,27 @@
|
|||||||
"lint": "next lint"
|
"lint": "next lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@apollo/server": "^4.10.2",
|
||||||
|
"@as-integrations/next": "^3.0.0",
|
||||||
"@radix-ui/react-avatar": "^1.0.4",
|
"@radix-ui/react-avatar": "^1.0.4",
|
||||||
"@radix-ui/react-dialog": "^1.0.5",
|
"@radix-ui/react-dialog": "^1.0.5",
|
||||||
"@radix-ui/react-slot": "^1.0.2",
|
"@radix-ui/react-slot": "^1.0.2",
|
||||||
"@vercel/analytics": "^1.1.2",
|
"@vercel/analytics": "^1.1.2",
|
||||||
|
"class-validator": "^0.14.1",
|
||||||
"class-variance-authority": "^0.7.0",
|
"class-variance-authority": "^0.7.0",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
"cmdk": "^0.2.0",
|
"cmdk": "^0.2.0",
|
||||||
|
"graphql": "^16.8.1",
|
||||||
|
"graphql-scalars": "^1.23.0",
|
||||||
"lucide-react": "^0.300.0",
|
"lucide-react": "^0.300.0",
|
||||||
"next": "14.0.4",
|
"next": "14.0.4",
|
||||||
"next-themes": "^0.3.0",
|
"next-themes": "^0.3.0",
|
||||||
"react": "^18",
|
"react": "^18",
|
||||||
"react-dom": "^18",
|
"react-dom": "^18",
|
||||||
|
"reflect-metadata": "^0.2.2",
|
||||||
"tailwind-merge": "^2.2.0",
|
"tailwind-merge": "^2.2.0",
|
||||||
"tailwindcss-animate": "^1.0.7",
|
"tailwindcss-animate": "^1.0.7",
|
||||||
|
"type-graphql": "^2.0.0-beta.6",
|
||||||
"vaul": "^0.8.0"
|
"vaul": "^0.8.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
11
src/apollo/resolvers.ts
Normal file
11
src/apollo/resolvers.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { Resolver, Query } from "type-graphql";
|
||||||
|
import { Me } from "./type-defs";
|
||||||
|
import { RESUME_DATA } from "../data/resume-data";
|
||||||
|
|
||||||
|
@Resolver(() => Me)
|
||||||
|
export class MeResolver {
|
||||||
|
@Query(() => Me)
|
||||||
|
me(): Me {
|
||||||
|
return RESUME_DATA as any;
|
||||||
|
}
|
||||||
|
}
|
127
src/apollo/type-defs.ts
Normal file
127
src/apollo/type-defs.ts
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
import { ObjectType, Field } from "type-graphql";
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Social {
|
||||||
|
@Field(() => String)
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Contact {
|
||||||
|
@Field(() => String)
|
||||||
|
email: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
tel: string;
|
||||||
|
|
||||||
|
@Field(() => [Social])
|
||||||
|
social: Social[];
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Education {
|
||||||
|
@Field(() => String)
|
||||||
|
school: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
degree: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
start: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
end: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Work {
|
||||||
|
@Field(() => String)
|
||||||
|
company: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
link: string;
|
||||||
|
|
||||||
|
@Field(() => [String])
|
||||||
|
badges: string[];
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
start: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
end: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
description: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Link {
|
||||||
|
@Field(() => String)
|
||||||
|
label: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
href: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Project {
|
||||||
|
@Field(() => String)
|
||||||
|
title: string;
|
||||||
|
|
||||||
|
@Field(() => [String])
|
||||||
|
techStack: string[];
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
description: string;
|
||||||
|
|
||||||
|
@Field(() => Link, { nullable: true })
|
||||||
|
link?: Link;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ObjectType()
|
||||||
|
export class Me {
|
||||||
|
@Field(() => String)
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
initials: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
location: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
locationLink: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
about: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
summary: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
avatarUrl: string;
|
||||||
|
|
||||||
|
@Field(() => String)
|
||||||
|
personalWebsiteUrl: string;
|
||||||
|
|
||||||
|
@Field(() => Contact)
|
||||||
|
contact: Contact;
|
||||||
|
|
||||||
|
@Field(() => [Education])
|
||||||
|
education: Education[];
|
||||||
|
|
||||||
|
@Field(() => [Work])
|
||||||
|
work: Work[];
|
||||||
|
|
||||||
|
@Field(() => [String])
|
||||||
|
skills: string[];
|
||||||
|
|
||||||
|
@Field(() => [Project])
|
||||||
|
projects: Project[];
|
||||||
|
}
|
21
src/app/graphql/route.ts
Normal file
21
src/app/graphql/route.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import "reflect-metadata";
|
||||||
|
|
||||||
|
import { ApolloServer } from "@apollo/server";
|
||||||
|
import { startServerAndCreateNextHandler } from "@as-integrations/next";
|
||||||
|
import { ApolloServerPluginLandingPageLocalDefault } from "@apollo/server/plugin/landingPage/default";
|
||||||
|
import { MeResolver } from "../../apollo/resolvers";
|
||||||
|
import { buildSchema } from "type-graphql";
|
||||||
|
import { NextRequest } from "next/server";
|
||||||
|
|
||||||
|
const schema = await buildSchema({
|
||||||
|
resolvers: [MeResolver],
|
||||||
|
});
|
||||||
|
const apolloServer = new ApolloServer({
|
||||||
|
schema,
|
||||||
|
plugins: [ApolloServerPluginLandingPageLocalDefault()],
|
||||||
|
introspection: true,
|
||||||
|
});
|
||||||
|
const handler = startServerAndCreateNextHandler<NextRequest>(apolloServer, {
|
||||||
|
context: async (req) => ({ req }),
|
||||||
|
});
|
||||||
|
export { handler as GET, handler as POST };
|
@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es5",
|
"target": "es2021",
|
||||||
"lib": ["dom", "dom.iterable", "esnext"],
|
"lib": ["dom", "dom.iterable", "esnext"],
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
@ -9,6 +11,7 @@
|
|||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
"moduleResolution": "bundler",
|
"moduleResolution": "bundler",
|
||||||
|
"strictPropertyInitialization": false,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
@ -22,6 +25,12 @@
|
|||||||
"@/*": ["./src/*"]
|
"@/*": ["./src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/images/logos/*.*"],
|
"include": [
|
||||||
|
"next-env.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx",
|
||||||
|
".next/types/**/*.ts",
|
||||||
|
"src/images/logos/*.*"
|
||||||
|
],
|
||||||
"exclude": ["node_modules"]
|
"exclude": ["node_modules"]
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user