1
0

initial commit

This commit is contained in:
Rokas Puzonas 2025-06-25 22:35:51 +03:00
commit 9e2c1016a7
29 changed files with 3240 additions and 0 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

23
.gitignore vendored Normal file
View File

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

1
.npmrc Normal file
View File

@ -0,0 +1 @@
engine-strict=true

6
.prettierignore Normal file
View File

@ -0,0 +1,6 @@
# Package Managers
package-lock.json
pnpm-lock.yaml
yarn.lock
bun.lock
bun.lockb

15
.prettierrc Normal file
View File

@ -0,0 +1,15 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100,
"plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
"overrides": [
{
"files": "*.svelte",
"options": {
"parser": "svelte"
}
}
]
}

38
README.md Normal file
View File

@ -0,0 +1,38 @@
# 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
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
```
## Building
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.

26
default.nix Normal file
View File

@ -0,0 +1,26 @@
{ lib,
version ? "git",
system,
pkgs
}:
pkgs.stdenv.mkDerivation {
pname = "website";
inherit version;
src = lib.cleanSource ./.;
nativeBuildInputs = [
pkgs.nodejs
pkgs.pnpm.configHook
];
pnpmDeps = pkgs.pnpm.fetchDeps {
inherit (self.packages.${system}.default) pname version src;
hash = "sha256-7NgYqOUOMa1xZlTJf1QTLmGl1TI55o58RxpcF+EBOa0=";
};
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
}
}
}
);

47
package.json Normal file
View File

@ -0,0 +1,47 @@
{
"name": "website",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"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": {
"@eslint/compat": "^1.2.5",
"@eslint/js": "^9.18.0",
"@fortawesome/fontawesome-free": "^6.7.2",
"@sveltejs/adapter-auto": "^6.0.0",
"@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"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild"
]
}
}

2719
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

93
src/app.css Normal file
View File

@ -0,0 +1,93 @@
@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;
@layer base {
@font-face {
font-family: 'Fira Code';
src: url('/fonts/FiraCode-Light.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('/fonts/FiraCode-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('/fonts/FiraCode-Medium.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('/fonts/FiraCode-SemiBold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Fira Code';
src: url('/fonts/FiraCode-Bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Fira Code VF';
src: url('/fonts/FiraCode-VF.woff2') format('woff2-variations');
/* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */
font-weight: 300 700;
font-style: normal;
}
}
body {
font-family: Fira Code;
}

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 {};

12
src/app.html Normal file
View File

@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<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

@ -0,0 +1,32 @@
<script lang="ts">
import type { ProjectInfo } from '$lib';
export var info: ProjectInfo;
</script>
<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 flex-grow flex-col gap-2 p-4">
<div>
{info.shortDescription}
</div>
<div class="text-srcery-black-200">
{info.createdAt}
<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>
<!-- <a href="/projects/{info.id}" class="my-auto bg-srcery-yellow hover:bg-srcery-yellow-bright text-srcery-black duration-200 p-1.5 m-4"> -->
<!-- <div class="text-center"> -->
<!-- Daugiau -->
<!-- </div> -->
<!-- </a> -->
</div>

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

@ -0,0 +1 @@
export const prerender = true;

52
src/routes/+layout.svelte Normal file
View File

@ -0,0 +1,52 @@
<script lang="ts">
import '../app.css';
import '@fortawesome/fontawesome-free/css/all.min.css';
import { email } from '$lib';
let { children } = $props();
</script>
<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:text-srcery-blue-500 duration-200 hover:underline">
Rokas Puzonas
</a>
</span>
</div>
</header>
<div class="w-full flex-grow px-6">
<main class="mx-auto max-w-screen-lg">
{@render children()}
</main>
</div>
<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="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"></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"></i>
<span class="text-srcery-blue-500 underline underline-offset-2"
>Rokas Puzonas</span
>
</a>
</span>
</div>
</footer>
</div>

41
src/routes/+page.svelte Normal file
View File

@ -0,0 +1,41 @@
<script lang="ts">
import ProjectCard from '$lib/components/ProjectCard.svelte';
import { projects } from '$lib';
</script>
<section class="mt-10 mb-10">
<div class="text-center text-2xl">
<p>Sveikas atvykęs!</p>
<p>Į mano <span class="text-srcery-yellow-500">projektų</span> kampelį</p>
</div>
</section>
<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-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 projects as project}
<ProjectCard info={project} />
{/each}
</div>
<!-- <a href="/projects" class="mx-auto text-lg bg-srcery-yellow hover:bg-srcery-yellow-bright text-srcery-black duration-200 p-2"> -->
<!-- Daugiau projektų... -->
<!-- </a> -->
</section>
<!-- <hr class="border-srcery-gray-1 border-dashed"> -->
<!-- <section id="contact" class="my-10"> -->
<!-- <h1 class="text-center text-3xl">Kontaktai</h1> -->
<!-- // TODO: -->
<!-- </section> -->

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
static/favicon.xcf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

23
svelte.config.js Normal file
View File

@ -0,0 +1,23 @@
import { mdsvex } from 'mdsvex';
import adapter from '@sveltejs/adapter-auto';
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',
assets: 'build',
fallback: undefined,
precompress: false,
strict: true,
trailingSlash: 'always'
})
},
extensions: ['.svelte', '.svx']
};
export default config;

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
}

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()]
});