initial commit

old
Andriy Cherniy 2022-08-11 14:01:27 +03:00
commit 7d0a2cee9c
35 changed files with 2660 additions and 0 deletions

13
frontend/.eslintignore Normal file
View File

@ -0,0 +1,13 @@
.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

20
frontend/.eslintrc.cjs Normal file
View File

@ -0,0 +1,20 @@
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
plugins: ['svelte3', '@typescript-eslint'],
ignorePatterns: ['*.cjs'],
overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
settings: {
'svelte3/typescript': () => require('typescript')
},
parserOptions: {
sourceType: 'module',
ecmaVersion: 2020
},
env: {
browser: true,
es2017: true,
node: true
}
};

8
frontend/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
.DS_Store
node_modules
/build
/.svelte-kit
/package
.env
.env.*
!.env.example

1
frontend/.npmrc Normal file
View File

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

13
frontend/.prettierignore Normal file
View File

@ -0,0 +1,13 @@
.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

6
frontend/.prettierrc Normal file
View File

@ -0,0 +1,6 @@
{
"useTabs": true,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 100
}

38
frontend/README.md Normal file
View File

@ -0,0 +1,38 @@
# create-svelte
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
## 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
npm init svelte
# create a new project in my-app
npm init svelte 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://kit.svelte.dev/docs/adapters) for your target environment.

36
frontend/package.json Normal file
View File

@ -0,0 +1,36 @@
{
"name": "frontend",
"version": "0.0.1",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"package": "svelte-kit package",
"preview": "vite preview",
"prepare": "svelte-kit sync",
"check": "svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --check --plugin-search-dir=. . && eslint .",
"format": "prettier --write --plugin-search-dir=. ."
},
"devDependencies": {
"@sveltejs/adapter-auto": "next",
"@sveltejs/kit": "next",
"@typescript-eslint/eslint-plugin": "^5.27.0",
"@typescript-eslint/parser": "^5.27.0",
"autoprefixer": "^10.4.7",
"eslint": "^8.16.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-svelte3": "^4.0.0",
"postcss": "^8.4.14",
"prettier": "^2.6.2",
"prettier-plugin-svelte": "^2.7.0",
"svelte": "^3.44.0",
"svelte-check": "^2.7.1",
"svelte-preprocess": "^4.10.7",
"tailwindcss": "^3.1.6",
"tslib": "^2.3.1",
"typescript": "^4.7.4",
"vite": "^3.0.0"
},
"type": "module"
}

2215
frontend/pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

95
frontend/src/app.css Normal file
View File

@ -0,0 +1,95 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@font-face {
font-family: 'Jeko-SemiBold';
src: url('fonts/Jeko Semi Bold.ttf')
}
@font-face {
font-family: 'Jeko-MediumItalic';
src: url('fonts/Jeko Medium Italic.ttf')
}
@font-face {
font-family: 'Jeko-Regular';
src: url('fonts/Jeko Regular.ttf')
}
html {
min-height:100%;
/* position:relative; */
}
html,
body {
height: 100%;
}
main {
background-color: #1B1D29;
/* border-radius: 50px; */
box-shadow: 29px 38px 50px -29px #08090D;
}
#title {
text-shadow: 0px 0px 30px #1F3891;
}
.button {
@apply w-full h-32 md:w-56 md:h-16 text-3xl md:text-lg rounded-full font-title font-normal text-white flex items-center justify-center p-4 bg-center bg-contain transition ease-in-out text-center;
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.5);
background: linear-gradient(0deg, rgba(27, 29, 41, 0.49), rgba(27, 29, 41, 0.49));
box-shadow: inset 0px 0px 30px #000000;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
-webkit-backdrop-filter: brightness(50%);
backdrop-filter: brightness(50%);
}
.button:hover {
box-shadow: inset 0px 0px 100px #000000;;
}
#button1 {
background-image: url('projects.jpg');
}
#button2 {
background-image: url('hosted.jpg');
}
.error {
font-size: 50pt;
}
.main {
height: 100%;
width: 100%;
}
body {
background: linear-gradient(107.56deg, #12151E 0%, #060910 100%);
height: 100%;
margin: 0 !important;
padding: 0 !important;
}
.bg {
pointer-events: none;
position: fixed;
width: 100%;
height: 100%;
object-fit: cover;
top: 0;
z-index: -1;
}
.link {
background-image: url('link.svg');
background-position: center;
background-repeat: no-repeat;
background-size: 50%;
background-color: #151515;
}

11
frontend/src/app.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
/// <reference types="@sveltejs/kit" />
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
// and what to do when importing types
declare namespace App {
// interface Locals {}
// interface Platform {}
// interface Session {}
// interface Stuff {}
}

13
frontend/src/app.html Normal file
View File

@ -0,0 +1,13 @@
<!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 class="scroll-smooth">
<img src="back.svg" class="bg">
<div class="main flex items-center justify-center">%sveltekit.body%</div>
</body>
</html>

View File

@ -0,0 +1,17 @@
<script lang="ts">
export let name: string;
export let description: string;
export let link: string;
</script>
<article
class="w-full flex flex-row p-4 items-center justify-between border-t-2 border-white border-opacity-10 gap-2 -mt-8"
>
<div class="flex flex-col gap-2 pl-4 -mb-2">
<h1 class="text-white font-sans text-2xl mt-1">{name}</h1>
{#each description.split('\n') as partDescription}
<p class="text-gray-500 font-sans text-xl break-words">{partDescription}</p>
{/each}
</div>
<a href={link} class="w-12 h-12 link m-4 rounded-xl shrink-0" target="_blank" />
</article>

View File

@ -0,0 +1,12 @@
[
{
"title": "Pleroma",
"description": "Ukrainian Pleroma instance for cuties who loves anime and tech stuff.\nWe love all people except russians",
"link": "https://pl.m0e.space"
},
{
"title": "Calibre",
"description": "E-Books management and reader",
"link": "https://books.m0e.space"
}
]

View File

@ -0,0 +1,7 @@
[
{
"title": "UAMonitor",
"description": "UAMonitor - FOSS minecraft monitoring web service originally made for ukrainians\nIt pings all servers from DB every 10 minutes and writes results into DB (WIP autoremove)\nBackend was made using Fastify as framework and Prisma as ORM, Frontend was made using SvelteKit as framework and TailwindCSS.",
"link": "https://stats.m0e.space"
}
]

View File

@ -0,0 +1,15 @@
<script context="module" lang="ts">
// @ts-ignore
export const load = ({ status }) => ({ props: { status } });
</script>
<script lang="ts">
export let status: number;
</script>
<svelte:head>
<title>{status}</title>
</svelte:head>
<h1 class="text-white font-title error">{status}</h1>
<a class="text-white text-opacity-50 underline font-sans" href="/">Back to main page</a>

View File

@ -0,0 +1,10 @@
<script>
import '../app.css';
</script>
<main
class="w-full md:w-8/12 lg:w-6/12 md:rounded-4xl md:min-h-0 min-h-full flex flex-col pb-8 gap-12"
>
<img class="h-38 w-full md:rounded-t-4xl" src="anime1.png" alt="anime girl 1" />
<slot />
</main>

View File

@ -0,0 +1,13 @@
<script lang="ts">
//@ts-ignore
import Project from '$lib/components/Project.svelte';
//@ts-ignore
import projects from '$lib/data/hosted.json';
</script>
<h1 class="text-3xl font-title text-white font-normal text-left ml-8 -mt-6 mb-2" id="title">
Hosted
</h1>
{#each projects as project}
<Project name={project.title} description={project.description} link={project.link} />
{/each}

View File

@ -0,0 +1,17 @@
<!-- <img class="h-38 w-full md:rounded-t-4xl" src="anime1.png" alt="anime girl 1" /> -->
<h1 class="text-5xl text-center m-4 font-title text-white font-normal" id="title">m0e.space</h1>
<div class="flex flex-col mx-8 items-center gap-10 justify-center md:flex-row">
<a href="/projects" class="button" id="button1">Our Projects</a>
<a href="/hosted" class="button" id="button2">Our hosted services</a>
</div>
<div class="grow w-full flex flex-row items-end content-between justify-between px-8">
<a
href="https://t.me/evolj1"
class="text-white text-opacity-50 underline font-['Jeko-MediumItalic'] text-xl md:text-lg"
>design: evolji</a
>
<!-- <div class="flex flex-row gap-4"></div> -->
</div>

View File

@ -0,0 +1,13 @@
<script lang="ts">
//@ts-ignore
import Project from '$lib/components/Project.svelte';
//@ts-ignore
import projects from '$lib/data/projects.json';
</script>
<h1 class="text-3xl font-title text-white font-normal text-left ml-8 -mt-6 mb-2" id="title">
Projects
</h1>
{#each projects as project}
<Project name={project.title} description={project.description} link={project.link} />
{/each}

BIN
frontend/static/anime1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

9
frontend/static/back.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 433 KiB

BIN
frontend/static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
frontend/static/hosted.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

3
frontend/static/link.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.25 12.75L28.5 1.5M21 1.5H28.5V9M28.5 18V25.5C28.5 26.2956 28.1839 27.0587 27.6213 27.6213C27.0587 28.1839 26.2956 28.5 25.5 28.5H4.5C3.70435 28.5 2.94129 28.1839 2.37868 27.6213C1.81607 27.0587 1.5 26.2956 1.5 25.5V4.5C1.5 3.70435 1.81607 2.94129 2.37868 2.37868C2.94129 1.81607 3.70435 1.5 4.5 1.5H12" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

17
frontend/svelte.config.js Normal file
View File

@ -0,0 +1,17 @@
import adapter from '@sveltejs/adapter-auto';
import preprocess from 'svelte-preprocess';
/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://github.com/sveltejs/svelte-preprocess
// for more information about preprocessors
preprocess: preprocess({
postcss: true
}),
kit: {
adapter: adapter()
}
};
export default config;

View File

@ -0,0 +1,19 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./src/**/*.{html,js,svelte,ts}'],
theme: {
fontFamily: {
title: ['Jeko-SemiBold'],
sans: ['Jeko-Regular']
},
extend: {
spacing: {
'10%': '10%'
},
borderRadius: {
'4xl': '50px'
}
}
},
plugins: []
};

13
frontend/tsconfig.json Normal file
View File

@ -0,0 +1,13 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"strict": true
}
}

8
frontend/vite.config.js Normal file
View File

@ -0,0 +1,8 @@
import { sveltekit } from '@sveltejs/kit/vite';
/** @type {import('vite').UserConfig} */
const config = {
plugins: [sveltekit()]
};
export default config;

12
package.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "moespace_new",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}