Skip to content

Commit 63ae464

Browse files
authored
Initial commit
0 parents  commit 63ae464

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+5488
-0
lines changed

.eslintrc.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "next/core-web-vitals"
3+
}

.gitignore

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
.yarn/install-state.gz
8+
9+
# testing
10+
/coverage
11+
12+
# next.js
13+
/.next/
14+
/out/
15+
16+
# production
17+
/build
18+
19+
# misc
20+
.DS_Store
21+
*.pem
22+
23+
# debug
24+
npm-debug.log*
25+
yarn-debug.log*
26+
yarn-error.log*
27+
28+
# local env files
29+
.env*.local
30+
31+
# vercel
32+
.vercel
33+
34+
# typescript
35+
*.tsbuildinfo
36+
next-env.d.ts
37+
38+
# ide
39+
.idea

.prettierrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"plugins": ["prettier-plugin-tailwindcss"]
3+
}

Dockerfile

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Use the official lightweight Node.js 18 image.
2+
# https://hub.docker.com/_/node
3+
FROM node:18-slim
4+
5+
# Create and change to the app directory.
6+
WORKDIR /usr/src/app
7+
8+
# Copy application dependency manifests to the container image.
9+
# A wildcard is used to ensure both package.json AND package-lock.json are copied.
10+
COPY package*.json ./
11+
12+
# Install all dependencies.
13+
RUN npm install
14+
15+
# Copy local code to the container image.
16+
COPY . .
17+
18+
# Build the app
19+
RUN npm run build
20+
21+
# Run the web service on container startup.
22+
CMD [ "npm", "start" ]

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2023 Bartosz Jarocki
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
![cv](https://github.com/BartoszJarocki/cv/assets/1017620/79bdb9fc-0b20-4d2c-aafe-0526ad4a71d2)
2+
3+
# Minimalist CV [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FBartoszJarocki%2Fcv)
4+
5+
Simple web app that renders minimalist CV with print-friendly layout.
6+
7+
Built with Next.js and shadcn/ui, deployed on Vercel.
8+
9+
# Features
10+
11+
- Setup only takes a few minutes [single config file](./src/data/resume-data.tsx)
12+
- Built using Next.js 14, React, Typescript, Shadcn/ui, TailwindCss
13+
- Auto generated Layout
14+
- Responsive for different devices
15+
- Optimized for Next.js and Vercel
16+
17+
# Getting Started Locally
18+
19+
1. Clone this repository to your local machine:
20+
21+
```bash
22+
git clone https://github.com/BartoszJarocki/cv.git
23+
```
24+
25+
2. Move to the cloned directory
26+
27+
```bash
28+
cd cv
29+
```
30+
31+
3. Install dependencies:
32+
33+
```bash
34+
yarn install
35+
```
36+
37+
4. Start the local Server:
38+
39+
```bash
40+
yarn dev
41+
```
42+
43+
5. Open the [Config file](./src/data/resume-data.tsx) and make changes
44+
45+
# Run with Docker
46+
47+
Build the container
48+
49+
```
50+
docker compose build
51+
```
52+
53+
Run the container
54+
55+
```
56+
docker compose up -d
57+
```
58+
59+
Stop the Container
60+
61+
```
62+
docker compose down
63+
```
64+
65+
# License
66+
67+
[MIT](https://choosealicense.com/licenses/mit/)

components.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "default",
4+
"rsc": true,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "tailwind.config.js",
8+
"css": "app/globals.css",
9+
"baseColor": "gray",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"aliases": {
14+
"components": "@/components",
15+
"utils": "@/lib/utils"
16+
}
17+
}

docker-compose.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: '3.8'
2+
3+
services:
4+
app:
5+
build: .
6+
ports:
7+
- '3000:3000'
8+
environment:
9+
- NODE_ENV=production
10+
restart: unless-stopped

next.config.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/** @type {import('next').NextConfig} */
2+
const nextConfig = {}
3+
4+
module.exports = nextConfig

package.json

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"name": "web-cv",
3+
"version": "0.1.0",
4+
"private": true,
5+
"scripts": {
6+
"dev": "next dev",
7+
"build": "next build",
8+
"start": "next start",
9+
"lint": "next lint"
10+
},
11+
"dependencies": {
12+
"@radix-ui/react-avatar": "^1.0.4",
13+
"@radix-ui/react-dialog": "^1.0.5",
14+
"@radix-ui/react-slot": "^1.0.2",
15+
"@vercel/analytics": "^1.1.2",
16+
"class-variance-authority": "^0.7.0",
17+
"clsx": "^2.0.0",
18+
"cmdk": "^0.2.0",
19+
"lucide-react": "^0.300.0",
20+
"next": "14.0.4",
21+
"react": "^18",
22+
"react-dom": "^18",
23+
"tailwind-merge": "^2.2.0",
24+
"tailwindcss-animate": "^1.0.7",
25+
"vaul": "^0.8.0"
26+
},
27+
"devDependencies": {
28+
"@types/node": "^20",
29+
"@types/react": "^18",
30+
"@types/react-dom": "^18",
31+
"autoprefixer": "^10.0.1",
32+
"eslint": "^8",
33+
"eslint-config-next": "14.0.4",
34+
"postcss": "^8",
35+
"prettier": "^3.1.1",
36+
"prettier-plugin-tailwindcss": "^0.5.9",
37+
"tailwindcss": "^3.4.0",
38+
"typescript": "^5"
39+
}
40+
}

postcss.config.js

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
}

public/next.svg

+1
Loading

public/vercel.svg

+1
Loading

src/app/apple-icon.png

8.44 KB
Loading

src/app/favicon.ico

15 KB
Binary file not shown.

src/app/globals.css

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
4+
5+
@layer base {
6+
:root {
7+
--background: 0 0% 100%;
8+
--foreground: 224 71.4% 4.1%;
9+
10+
--card: 0 0% 100%;
11+
--card-foreground: 224 71.4% 4.1%;
12+
13+
--popover: 0 0% 100%;
14+
--popover-foreground: 224 71.4% 4.1%;
15+
16+
--primary: 220.9 39.3% 11%;
17+
--primary-foreground: 210 20% 98%;
18+
19+
--secondary: 220 14.3% 95.9%;
20+
--secondary-foreground: 220.9 39.3% 11%;
21+
22+
--muted: 220 14.3% 95.9%;
23+
--muted-foreground: 220 8.9% 46.1%;
24+
25+
--accent: 220 14.3% 95.9%;
26+
--accent-foreground: 220.9 39.3% 11%;
27+
28+
--destructive: 0 84.2% 60.2%;
29+
--destructive-foreground: 210 20% 98%;
30+
31+
--border: 220 13% 91%;
32+
--input: 220 13% 91%;
33+
--ring: 224 71.4% 4.1%;
34+
35+
--radius: 0.5rem;
36+
}
37+
38+
.dark {
39+
--background: 224 71.4% 4.1%;
40+
--foreground: 210 20% 98%;
41+
42+
--card: 224 71.4% 4.1%;
43+
--card-foreground: 210 20% 98%;
44+
45+
--popover: 224 71.4% 4.1%;
46+
--popover-foreground: 210 20% 98%;
47+
48+
--primary: 210 20% 98%;
49+
--primary-foreground: 220.9 39.3% 11%;
50+
51+
--secondary: 215 27.9% 16.9%;
52+
--secondary-foreground: 210 20% 98%;
53+
54+
--muted: 215 27.9% 16.9%;
55+
--muted-foreground: 217.9 10.6% 64.9%;
56+
57+
--accent: 215 27.9% 16.9%;
58+
--accent-foreground: 210 20% 98%;
59+
60+
--destructive: 0 62.8% 30.6%;
61+
--destructive-foreground: 210 20% 98%;
62+
63+
--border: 215 27.9% 16.9%;
64+
--input: 215 27.9% 16.9%;
65+
--ring: 216 12.2% 83.9%;
66+
}
67+
}
68+
69+
@layer base {
70+
* {
71+
@apply border-border;
72+
}
73+
body {
74+
@apply bg-background text-foreground;
75+
}
76+
}
77+
78+
.print-force-new-page {
79+
page-break-before: always;
80+
}

src/app/layout.tsx

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import type { Metadata } from "next";
2+
import { Analytics } from "@vercel/analytics/react";
3+
import { Inter } from "next/font/google";
4+
5+
import "./globals.css";
6+
import React from "react";
7+
8+
export const metadata: Metadata = {
9+
title: "Create Next App",
10+
description: "Generated by create next app",
11+
};
12+
13+
// If loading a variable font, you don't need to specify the font weight
14+
const inter = Inter({
15+
subsets: ["latin"],
16+
display: "swap",
17+
});
18+
19+
export default function RootLayout({
20+
children,
21+
}: {
22+
children: React.ReactNode;
23+
}) {
24+
return (
25+
<html lang="en" className={inter.className}>
26+
<body>{children}</body>
27+
<Analytics />
28+
</html>
29+
);
30+
}

0 commit comments

Comments
 (0)