1
0

Compare commits

...

No commits in common. "7b8cf806477c8a6be169708f3c11489f0730216b" and "4bf9a7953bca4c60e87e40f1341e51ba0fd617ba" have entirely different histories.

31 changed files with 3118 additions and 5333 deletions

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
root = true
[*]
indent_style = tab
indent_size = 4
[*.nix]
indent_style = space
indent_size = 2

View File

@ -1,13 +0,0 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
package-lock.json
yarn.lock

View File

@ -1,15 +0,0 @@
/** @type { import("eslint").Linter.Config } */
module.exports = {
root: true,
extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'],
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020,
extraFileExtensions: ['.svelte']
},
env: {
browser: true,
es2017: true,
node: true
}
};

20
.gitignore vendored
View File

@ -1,11 +1,23 @@
.DS_Store
node_modules
/build
# Output
.output
.vercel
.netlify
.wrangler
/.svelte-kit
/package
/build
# OS
.DS_Store
Thumbs.db
# Env
.env
.env.*
!.env.example
!.env.test
# Vite
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
result

View File

@ -1,4 +1,6 @@
# Ignore files for PNPM, NPM and YARN
pnpm-lock.yaml
# Package Managers
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lock
bun.lockb

View File

@ -3,6 +3,13 @@
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte"],
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}

View File

@ -1,4 +1,18 @@
# My personal portfolio website
# sv
Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
## Creating a project
If you're seeing this, you've probably already done this step. Congrats!
```bash
# create a new project in the current directory
npx sv create
# create a new project in my-app
npx sv create my-app
```
## Developing
@ -18,3 +32,7 @@ To create a production version of your app:
```bash
npm run build
```
You can preview the production build with `npm run preview`.
> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.

View File

@ -1,13 +1,28 @@
{ lib,
buildNpmPackage,
version ? "git",
pkgs
}:
buildNpmPackage {
pname = "portfolio-website";
inherit version;
let
pname = "website";
src = lib.cleanSource ./.;
npmDepsHash = "sha256-fE76/2s8rkh9COGoR4Seq1E0BPIGr774ETZzrSofu+E=";
in
pkgs.stdenv.mkDerivation {
inherit version pname src;
nativeBuildInputs = [
pkgs.nodejs
pkgs.pnpm.configHook
];
pnpmDeps = pkgs.pnpm.fetchDeps {
inherit pname version src;
hash = "sha256-ZVlAcietLamwwohHPDVDCqBp2IDZSNegtwagLCYCJQ4=";
};
buildPhase = ''
pnpm build
'';
installPhase = ''
mkdir -p $out/www
cp -r build/* $out/www

40
eslint.config.js Normal file
View File

@ -0,0 +1,40 @@
import prettier from 'eslint-config-prettier';
import { includeIgnoreFile } from '@eslint/compat';
import js from '@eslint/js';
import svelte from 'eslint-plugin-svelte';
import globals from 'globals';
import { fileURLToPath } from 'node:url';
import ts from 'typescript-eslint';
import svelteConfig from './svelte.config.js';
const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
export default ts.config(
includeIgnoreFile(gitignorePath),
js.configs.recommended,
...ts.configs.recommended,
...svelte.configs.recommended,
prettier,
...svelte.configs.prettier,
{
languageOptions: {
globals: { ...globals.browser, ...globals.node }
},
rules: {
// typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects.
// see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
'no-undef': 'off'
}
},
{
files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'],
languageOptions: {
parserOptions: {
projectService: true,
extraFileExtensions: ['.svelte'],
parser: ts.parser,
svelteConfig
}
}
}
);

14
flake.lock generated
View File

@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -20,16 +20,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1711124224,
"narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=",
"lastModified": 1750646418,
"narHash": "sha256-4UAN+W0Lp4xnUiHYXUXAPX18t+bn6c4Btry2RqM9JHY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "56528ee42526794d413d6f244648aaee4a7b56c0",
"rev": "1f426f65ac4e6bf808923eb6f8b8c2bfba3d18c5",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-23.11",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}

View File

@ -1,8 +1,8 @@
{
description = "My personal portfolio website";
description = "My personal website";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
flake-utils.url = "github:numtide/flake-utils";
};

5015
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,33 +1,48 @@
{
"name": "portfolio-website",
"version": "0.0.1",
"name": "website",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "prettier --check . && eslint .",
"prepare": "tw-patch install"
"prepare": "svelte-kit sync || echo ''",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"format": "prettier --write .",
"lint": "prettier --check . && eslint ."
},
"devDependencies": {
"@fortawesome/fontawesome-free": "^6.5.1",
"@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/adapter-static": "^3.0.1",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^3.0.0",
"@types/eslint": "^8.56.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.35.1",
"postcss": "^8.4.38",
"prettier": "^3.1.1",
"prettier-plugin-svelte": "^3.1.2",
"svelte": "^4.2.7",
"tailwindcss": "^3.4.1",
"tailwindcss-patch": "^2.2.3",
"unplugin-tailwindcss-mangle": "^2.2.2",
"vite": "^5.0.3"
"@eslint/compat": "^1.2.5",
"@eslint/js": "^9.18.0",
"@fortawesome/fontawesome-free": "^6.7.2",
"@sveltejs/adapter-auto": "^6.0.0",
"@sveltejs/adapter-static": "^3.0.8",
"@sveltejs/kit": "^2.16.0",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"@tailwindcss/forms": "^0.5.9",
"@tailwindcss/typography": "^0.5.15",
"@tailwindcss/vite": "^4.0.0",
"eslint": "^9.18.0",
"eslint-config-prettier": "^10.0.1",
"eslint-plugin-svelte": "^3.0.0",
"globals": "^16.0.0",
"mdsvex": "^0.12.3",
"prettier": "^3.4.2",
"prettier-plugin-svelte": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.11",
"svelte": "^5.0.0",
"svelte-check": "^4.0.0",
"tailwindcss": "^4.0.0",
"typescript": "^5.0.0",
"typescript-eslint": "^8.20.0",
"vite": "^6.2.6",
"vite-plugin-devtools-json": "^0.2.0"
},
"type": "module"
"pnpm": {
"onlyBuiltDependencies": [
"esbuild"
]
}
}

2731
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

View File

@ -1,3 +1,44 @@
@import 'tailwindcss';
@plugin '@tailwindcss/forms';
@plugin '@tailwindcss/typography';
@theme {
--color-srcery-black-200: rgb(145, 129, 117);
--color-srcery-black-500: rgb(28, 27, 25);
--color-srcery-black-800: rgb(18, 18, 18);
--color-srcery-white-300: rgb(252, 232, 195);
--color-srcery-white-500: rgb(208, 191, 161);
--color-srcery-gray-200: rgb(88, 88, 88);
--color-srcery-gray-300: rgb(78, 78, 78);
--color-srcery-gray-400: rgb(68, 68, 68);
--color-srcery-gray-500: rgb(58, 58, 58);
--color-srcery-gray-600: rgb(48, 48, 48);
--color-srcery-gray-700: rgb(38, 38, 38);
--color-srcery-red-300: rgb(247, 83, 65);
--color-srcery-red-500: rgb(239, 47, 39);
--color-srcery-orange-300: rgb(255, 135, 0);
--color-srcery-orange-500: rgb(215, 95, 0);
--color-srcery-yellow-300: rgb(254, 208, 110);
--color-srcery-yellow-500: rgb(251, 184, 41);
--color-srcery-green-300: rgb(152, 188, 55);
--color-srcery-green-500: rgb(81, 159, 80);
--color-srcery-blue-300: rgb(104, 168, 228);
--color-srcery-blue-500: rgb(44, 120, 191);
--color-srcery-cyan-300: rgb(83, 253, 233);
--color-srcery-cyan-500: rgb(10, 174, 179);
--color-srcery-magenta-300: rgb(255, 92, 143);
--color-srcery-magenta-500: rgb(224, 44, 109);
}
@tailwind base;
@tailwind components;
@tailwind utilities;

13
src/app.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
// See https://svelte.dev/docs/kit/types#app.d.ts
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface PageState {}
// interface Platform {}
}
}
export {};

View File

@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover" class="text-srcery-white bg-srcery-black">
<body data-sveltekit-preload-data="hover" class="text-srcery-white-500 bg-srcery-black-500">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

View File

@ -1,20 +1,25 @@
<script>
export var info
<script lang="ts">
import type { ProjectInfo } from '$lib';
export var info: ProjectInfo;
</script>
<div class="bg-srcery-black-hard flex flex-row gap-2 border-srcery-black-hard border-2 border-solid">
<div class="bg-srcery-black p-4 text-2xl flex flex-col justify-center">
<div class="bg-srcery-black-800 border-srcery-black-800 flex flex-row gap-2 border-2 border-solid">
<div class="bg-srcery-black-500 flex flex-col justify-center p-4 text-2xl">
{info.title}
</div>
<div class="flex-grow p-4 flex flex-col gap-2">
<div class="flex flex-grow flex-col gap-2 p-4">
<div>
{info.shortDescription}
</div>
<div class="text-srcery-black-bright">
<div class="text-srcery-black-200">
{info.createdAt}
<a href="{info.sourceCodeURL}" class="hover:text-srcery-blue duration-200">
<i class="fa-brands fa-github" />
<a
href={info.sourceCodeURL}
class="hover:text-srcery-blue-500 duration-200"
aria-label="Source code"
>
<i class="fa-brands fa-git-alt"></i>
</a>
</div>
</div>

View File

@ -1,17 +0,0 @@
export var gameOfLifeInfo = {
id: "game-of-life",
title: "\"Game Of Life\"",
sourceCodeURL: "https://git.rpuzonas.com/rpuzonas/rust-game-of-life",
createdAt: "2022/06/03",
shortDescription: "John Conway's game of life parašytas rust programavimo kalboje"
}
export var projects = [
gameOfLifeInfo,
]
export var highlightProjects = [
gameOfLifeInfo,
]

21
src/lib/index.ts Normal file
View File

@ -0,0 +1,21 @@
export interface ProjectInfo {
id: string
title: string
sourceCodeURL: string
createdAt: string
shortDescription: string
}
export const email = "rokas.puz@gmail.com"
const gameOfLifeInfo: ProjectInfo = {
id: "game-of-life",
title: "\"Game Of Life\"",
sourceCodeURL: "https://git.rpuzonas.com/rpuzonas/rust-game-of-life",
createdAt: "2022/06/03",
shortDescription: "John Conway's game of life parašytas rust programavimo kalboje"
}
export const projects = [
gameOfLifeInfo,
]

View File

@ -1,78 +1,54 @@
<script lang="ts">
import '../app.css';
import '@fortawesome/fontawesome-free/css/all.min.css';
import { email } from '$lib';
let { children } = $props();
</script>
<svelte:head>
<title>Rokas Puzonas</title>
</svelte:head>
<script>
import "../app.css";
import "@fortawesome/fontawesome-free/css/all.min.css"
// const navLinks = [
// {
// label: "Projektai",
// href: "/#projects"
// },
// {
// label: "Apie mane",
// href: "/#about"
// },
// {
// label: "Kontaktai",
// href: "/#contact"
// }
// ]
const email = "rokas.puz@gmail.com"
</script>
<div class="w-full h-dvh flex flex-col">
<header class="px-6 py-3 bg-srcery-gray-6 text-lg">
<div class="mx-auto max-w-screen-lg flex flex-row justify-between">
<div class="flex h-dvh w-full flex-col">
<header class="bg-srcery-gray-700 px-6 py-3 text-lg">
<div class="mx-auto flex max-w-screen-lg flex-row justify-between">
<span>
<a
href="/"
class="hover:underline duration-200 hover:text-srcery-blue"
>
<a href="/" class="hover:text-srcery-blue-500 duration-200 hover:underline">
Rokas Puzonas
</a>
</span>
<!-- <span class="flex flex-row gap-6"> -->
<!-- {#each navLinks as navLink} -->
<!-- <a -->
<!-- href={navLink.href} -->
<!-- class="hover:underline duration-200 hover:text-srcery-blue" -->
<!-- > -->
<!-- {navLink.label} -->
<!-- </a> -->
<!-- {/each} -->
<!-- </span> -->
</div>
</header>
<div class="px-6 w-full flex-grow">
<div class="w-full flex-grow px-6">
<main class="mx-auto max-w-screen-lg">
<slot />
{@render children()}
</main>
</div>
<footer class="bg-srcery-gray-5 px-6 py-3 w-full">
<div class="flex flex-col md:flex-row md:gap-8 justify-center">
<footer class="bg-srcery-gray-600 w-full px-6 py-3">
<div class="flex flex-col justify-center md:flex-row md:gap-8">
<span>
<a href="mailto:{email}">
<i class="fa-regular fa-envelope"></i>
<span class="underline underline-offset-2 text-srcery-blue">{email}</span>
<span class="text-srcery-blue-500 underline underline-offset-2">{email}</span>
</a>
</span>
<span>
<a href="https://git.rpuzonas.com/rpuzonas/">
<i class="fa-brands fa-square-git" />
<span class="underline underline-offset-2 text-srcery-blue">@RokasPuzonas</span>
<i class="fa-brands fa-square-git"></i>
<span class="text-srcery-blue-500 underline underline-offset-2"
>@RokasPuzonas</span
>
</a>
</span>
<span>
<a href="https://www.linkedin.com/in/rokas-puzonas-a60842243/">
<i class="fa-brands fa-linkedin" />
<span class="underline underline-offset-2 text-srcery-blue">Rokas Puzonas</span>
<i class="fa-brands fa-linkedin"></i>
<span class="text-srcery-blue-500 underline underline-offset-2"
>Rokas Puzonas</span
>
</a>
</span>
</div>

View File

@ -1,29 +1,29 @@
<script>
import ProjectCard from "$lib/components/ProjectCard.svelte";
import { highlightProjects } from '$lib'
<script lang="ts">
import ProjectCard from '$lib/components/ProjectCard.svelte';
import { projects } from '$lib';
</script>
<section class="mb-10 mt-10">
<div class="text-2xl text-center">
<section class="mt-10 mb-10">
<div class="text-center text-2xl">
<p>Sveikas atvykęs!</p>
<p>Į mano <span class="text-srcery-yellow">projektų</span> kampelį</p>
<p>Į mano <span class="text-srcery-yellow-500">projektų</span> kampelį</p>
</div>
</section>
<hr class="border-srcery-gray-1 border-dashed">
<hr class="border-srcery-gray-200 border-dashed" />
<!-- <section id="about" class="my-10"> -->
<!-- <h1 class="text-center text-3xl">Apie mane</h1> -->
<!-- // TODO: -->
<!-- </section> -->
<hr class="border-srcery-gray-1 border-dashed">
<hr class="border-srcery-gray-200 border-dashed" />
<section id="projects" class="my-10 flex flex-col gap-6">
<h1 class="text-center text-3xl">Projektai</h1>
<div class="flex flex-col gap-4">
{#each highlightProjects as project }
{#each projects as project}
<ProjectCard info={project} />
{/each}
</div>

View File

@ -1,2 +0,0 @@
// TODO:

View File

@ -1,10 +0,0 @@
<script>
import ProjectCard from "$lib/components/ProjectCard.svelte";
import { projects } from '$lib'
</script>
<div class="flex flex-col mt-8 gap-4">
{#each projects as project }
<ProjectCard info={project} />
{/each}
</div>

View File

@ -1,8 +1,12 @@
import { mdsvex } from 'mdsvex';
import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: [vitePreprocess(), mdsvex()],
kit: {
adapter: adapter({
pages: 'build',
@ -13,14 +17,7 @@ const config = {
trailingSlash: 'always'
})
},
preprocess: vitePreprocess({
postcss: {
plugins: {
tailwindcss: {},
autoprefixer: {}
}
}
})
extensions: ['.svelte', '.svx']
};
export default config;

View File

@ -1,61 +0,0 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./src/**/*.{html,js,css,svelte,ts}"
],
theme: {
extend: {
colors: {
srcery: {
black: {
bright: 'rgb(145, 129, 117)',
DEFAULT: 'rgb(28, 27, 25)',
hard: 'rgb(18, 18, 18)',
},
white: {
bright: 'rgb(252, 232, 195)',
DEFAULT: 'rgb(208, 191, 161)',
},
gray: {
1: 'rgb(88, 88, 88)',
2: 'rgb(78, 78, 78)',
3: 'rgb(68, 68, 68)',
4: 'rgb(58, 58, 58)',
5: 'rgb(48, 48, 48)',
6: 'rgb(38, 38, 38)',
},
red: {
bright: 'rgb(247, 83, 65)',
DEFAULT: 'rgb(239, 47, 39)',
},
orange: {
bright: 'rgb(255, 135, 0)',
DEFAULT: 'rgb(215, 95, 0)',
},
yellow: {
bright: 'rgb(254, 208, 110)',
DEFAULT: 'rgb(251, 184, 41)',
},
green: {
bright: 'rgb(152, 188, 55)',
DEFAULT: 'rgb(81, 159, 80)',
},
blue: {
bright: 'rgb(104, 168, 228)',
DEFAULT: 'rgb(44, 120, 191)',
},
cyan: {
bright: 'rgb(83, 253, 233)',
DEFAULT: 'rgb(10, 174, 179)',
},
magenta: {
bright: 'rgb(255, 92, 143)',
DEFAULT: 'rgb(224, 44, 109)',
},
},
},
},
},
plugins: [],
}

20
tsconfig.json Normal file
View File

@ -0,0 +1,20 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true,
"moduleResolution": "bundler",
"allowImportingTsExtensions": true
}
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
//
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
// from the referenced tsconfig.json - TypeScript does not merge them in
}

View File

@ -1,6 +0,0 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [sveltekit()]
});

8
vite.config.ts Normal file
View File

@ -0,0 +1,8 @@
import devtoolsJson from 'vite-plugin-devtools-json';
import tailwindcss from '@tailwindcss/vite';
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [tailwindcss(), sveltekit(), devtoolsJson()]
});