feat: add initial project setup and first draft
This commit is contained in:
5
.cspell.yaml
Normal file
5
.cspell.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
version: "0.2"
|
||||
language: "en"
|
||||
words:
|
||||
- markuplint
|
||||
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
|
||||
# jetbrains setting folder
|
||||
.idea/
|
||||
6
.markuplintrc.json
Normal file
6
.markuplintrc.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"extends": ["markuplint:recommended-static-html"],
|
||||
"parser": {
|
||||
".astro$": "@markuplint/astro-parser"
|
||||
}
|
||||
}
|
||||
7
.stylelintignore
Normal file
7
.stylelintignore
Normal file
@@ -0,0 +1,7 @@
|
||||
# vim: filetype=gitignore
|
||||
*.ico
|
||||
*.json
|
||||
*.md
|
||||
*.mjs
|
||||
*.svg
|
||||
*.yaml
|
||||
45
README.md
Normal file
45
README.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Astro Starter Kit: Minimal
|
||||
|
||||
```sh
|
||||
pnpm create astro@latest -- --template minimal
|
||||
```
|
||||
|
||||
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
|
||||
|
||||
## 🚀 Project Structure
|
||||
|
||||
Inside of your Astro project, you'll see the following folders and files:
|
||||
|
||||
```text
|
||||
/
|
||||
├── public/
|
||||
├── src/
|
||||
│ └── pages/
|
||||
│ └── index.astro
|
||||
└── package.json
|
||||
```
|
||||
|
||||
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page
|
||||
is exposed as a route based on its file name.
|
||||
|
||||
There's nothing special about `src/components/`, but that's where we like to put
|
||||
any Astro/React/Vue/Svelte/Preact components.
|
||||
|
||||
Any static assets, like images, can be placed in the `public/` directory.
|
||||
|
||||
## 🧞 Commands
|
||||
|
||||
All commands are run from the root of the project, from a terminal:
|
||||
|
||||
| Command | Action |
|
||||
| :------------------------ | :----------------------------------------------- |
|
||||
| `pnpm install` | Installs dependencies |
|
||||
| `pnpm dev` | Starts local dev server at `localhost:4321` |
|
||||
| `pnpm build` | Build your production site to `./dist/` |
|
||||
| `pnpm preview` | Preview your build locally, before deploying |
|
||||
| `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` |
|
||||
| `pnpm astro -- --help` | Get help using the Astro CLI |
|
||||
|
||||
## 👀 Want to learn more?
|
||||
|
||||
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
|
||||
10
astro.config.mjs
Normal file
10
astro.config.mjs
Normal file
@@ -0,0 +1,10 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from "astro/config";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
vite: {
|
||||
plugins: [tailwindcss()],
|
||||
},
|
||||
});
|
||||
14
eslint.config.mjs
Normal file
14
eslint.config.mjs
Normal file
@@ -0,0 +1,14 @@
|
||||
import js from "@eslint/js";
|
||||
import { defineConfig } from "eslint/config";
|
||||
import eslintPluginAstro from "eslint-plugin-astro";
|
||||
import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended";
|
||||
|
||||
export default defineConfig([
|
||||
{
|
||||
files: ["**/*.{js,mjs}"],
|
||||
plugins: { js },
|
||||
extends: ["js/recommended"],
|
||||
},
|
||||
...eslintPluginAstro.configs.recommended,
|
||||
eslintPluginPrettierRecommended,
|
||||
]);
|
||||
39
package.json
Normal file
39
package.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro",
|
||||
"lint:eslint": "eslint",
|
||||
"lint:markuplint": "markuplint '**/*.{astro,html}'",
|
||||
"lint:stylelint": "stylelint ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/vite": "^4.2.1",
|
||||
"astro": "^5.17.1",
|
||||
"tailwindcss": "^4.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^10.0.1",
|
||||
"@markuplint/astro-parser": "^4.6.23",
|
||||
"@markuplint/ml-config": "^4.8.15",
|
||||
"cspell": "^9.7.0",
|
||||
"eslint": "^10.0.2",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-astro": "^1.6.0",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"markuplint": "^4.14.1",
|
||||
"postcss-html": "^1.8.1",
|
||||
"prettier": "^3.8.1",
|
||||
"prettier-plugin-astro": "^0.14.1",
|
||||
"prettier-plugin-tailwindcss": "^0.7.2",
|
||||
"stylelint": "^17.4.0",
|
||||
"stylelint-config-html": "^1.1.0",
|
||||
"stylelint-config-recommended": "^18.0.0",
|
||||
"stylelint-config-standard": "^40.0.0",
|
||||
"stylelint-config-tailwindcss": "^1.0.1"
|
||||
}
|
||||
}
|
||||
6756
pnpm-lock.yaml
generated
Normal file
6756
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
15
prettier.config.mjs
Normal file
15
prettier.config.mjs
Normal file
@@ -0,0 +1,15 @@
|
||||
/** @type {import("prettier").Config} */
|
||||
export default {
|
||||
plugins: ["prettier-plugin-astro", "prettier-plugin-tailwindcss"],
|
||||
|
||||
overrides: [
|
||||
{
|
||||
files: "*.astro",
|
||||
options: {
|
||||
parser: "astro",
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
astroAllowShorthand: true,
|
||||
};
|
||||
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 655 B |
9
public/favicon.svg
Normal file
9
public/favicon.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
|
||||
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
|
||||
<style>
|
||||
path { fill: #000; }
|
||||
@media (prefers-color-scheme: dark) {
|
||||
path { fill: #FFF; }
|
||||
}
|
||||
</style>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 749 B |
12
src/components/external-link.astro
Normal file
12
src/components/external-link.astro
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
const { ariaLabel, cssClass, href } = Astro.props;
|
||||
---
|
||||
|
||||
<a
|
||||
aria-label={ariaLabel}
|
||||
class:list={[
|
||||
cssClass,
|
||||
"flex min-w-full items-center gap-4 rounded px-6 py-2 text-lg sm:px-24",
|
||||
]}
|
||||
{href}><slot /></a
|
||||
>
|
||||
BIN
src/images/Icon Alec 150.png
Normal file
BIN
src/images/Icon Alec 150.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
3
src/images/mastodon-logo-white.svg
Normal file
3
src/images/mastodon-logo-white.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="74" height="79" viewBox="0 0 74 79" fill="white" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M73.7014 17.9592C72.5616 9.62034 65.1774 3.04876 56.424 1.77536C54.9472 1.56019 49.3517 0.7771 36.3901 0.7771H36.2933C23.3281 0.7771 20.5465 1.56019 19.0697 1.77536C10.56 3.01348 2.78877 8.91838 0.903306 17.356C-0.00357857 21.5113 -0.100361 26.1181 0.068112 30.3439C0.308275 36.404 0.354874 42.4535 0.91406 48.489C1.30064 52.498 1.97502 56.4751 2.93215 60.3905C4.72441 67.6217 11.9795 73.6395 19.0876 76.0945C26.6979 78.6548 34.8821 79.0799 42.724 77.3221C43.5866 77.1245 44.4398 76.8953 45.2833 76.6342C47.1867 76.0381 49.4199 75.3714 51.0616 74.2003C51.0841 74.1839 51.1026 74.1627 51.1156 74.1382C51.1286 74.1138 51.1359 74.0868 51.1368 74.0592V68.2108C51.1364 68.185 51.1302 68.1596 51.1185 68.1365C51.1069 68.1134 51.0902 68.0932 51.0695 68.0773C51.0489 68.0614 51.0249 68.0503 50.9994 68.0447C50.9738 68.0391 50.9473 68.0392 50.9218 68.045C45.8976 69.226 40.7491 69.818 35.5836 69.8087C26.694 69.8087 24.3031 65.6569 23.6184 63.9285C23.0681 62.4347 22.7186 60.8764 22.5789 59.2934C22.5775 59.2669 22.5825 59.2403 22.5934 59.216C22.6043 59.1916 22.621 59.1702 22.6419 59.1533C22.6629 59.1365 22.6876 59.1248 22.714 59.1191C22.7404 59.1134 22.7678 59.1139 22.794 59.1206C27.7345 60.2936 32.799 60.8856 37.8813 60.8843C39.1036 60.8843 40.3223 60.8843 41.5447 60.8526C46.6562 60.7115 52.0437 60.454 57.0728 59.4874C57.1983 59.4628 57.3237 59.4416 57.4313 59.4098C65.3638 57.9107 72.9128 53.2051 73.6799 41.2895C73.7086 40.8204 73.7803 36.3758 73.7803 35.889C73.7839 34.2347 74.3216 24.1533 73.7014 17.9592ZM61.4925 47.6918H53.1514V27.5855C53.1514 23.3526 51.3591 21.1938 47.7136 21.1938C43.7061 21.1938 41.6988 23.7476 41.6988 28.7919V39.7974H33.4078V28.7919C33.4078 23.7476 31.3969 21.1938 27.3894 21.1938C23.7654 21.1938 21.9552 23.3526 21.9516 27.5855V47.6918H13.6176V26.9752C13.6176 22.7423 14.7157 19.3795 16.9118 16.8868C19.1772 14.4 22.1488 13.1231 25.8373 13.1231C30.1064 13.1231 33.3325 14.7386 35.4832 17.9662L37.5587 21.3949L39.6377 17.9662C41.7884 14.7386 45.0145 13.1231 49.2765 13.1231C52.9614 13.1231 55.9329 14.4 58.2055 16.8868C60.4017 19.3772 61.4997 22.74 61.4997 26.9752L61.4925 47.6918Z" fill="inherit"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
57
src/pages/index.astro
Normal file
57
src/pages/index.astro
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
import { Image } from "astro:assets";
|
||||
import ExternalLink from "../components/external-link.astro";
|
||||
import avatar from "../images/Icon Alec 150.png";
|
||||
import MastodonLogo from "../images/mastodon-logo-white.svg";
|
||||
import "../styles/global.css";
|
||||
|
||||
const svgSize = 24;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>f1r3.xyz</title>
|
||||
</head>
|
||||
<body
|
||||
class="flex min-h-screen flex-col justify-center p-6 sm:px-14 md:px-24 lg:px-32"
|
||||
>
|
||||
<main>
|
||||
<article class="flex flex-col items-center gap-10">
|
||||
<Image
|
||||
alt="avatar of Alec the zebra"
|
||||
class="rounded-full"
|
||||
priority
|
||||
src={avatar}
|
||||
/>
|
||||
<hgroup>
|
||||
<h1>f1r3w4rr10r</h1>
|
||||
<p class="text-zinc-600">aka Alec the zebra</p>
|
||||
</hgroup>
|
||||
<p class="text-zinc-600">
|
||||
A zebra from Germany – (Web-)dev by day, furry, gamer and game master
|
||||
by night
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<ExternalLink
|
||||
ariaLabel="Link to Mastodon"
|
||||
cssClass="link-mastodon"
|
||||
href="https://bark.lgbt/@f1r3w4rr10r"
|
||||
><MastodonLogo
|
||||
height={svgSize}
|
||||
width={svgSize}
|
||||
aria-label="Mastodon Logo"
|
||||
/> @f1r3w4rr10r@bark.lgbt</ExternalLink
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
19
src/styles/global.css
Normal file
19
src/styles/global.css
Normal file
@@ -0,0 +1,19 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--color-mastodon-primary: #6364ff;
|
||||
--color-mastodon-dark: #17063b;
|
||||
--color-mastodon-dark-hover: #2f0c7a;
|
||||
}
|
||||
|
||||
@layer base {
|
||||
h1 {
|
||||
@apply text-5xl font-bold;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
.link-mastodon {
|
||||
@apply bg-mastodon-dark hover:bg-mastodon-dark-hover text-white;
|
||||
}
|
||||
}
|
||||
8
stylelint.config.mjs
Normal file
8
stylelint.config.mjs
Normal file
@@ -0,0 +1,8 @@
|
||||
/** @type {import("stylelint").Config} */
|
||||
export default {
|
||||
extends: [
|
||||
"stylelint-config-recommended",
|
||||
"stylelint-config-tailwindcss",
|
||||
"stylelint-config-html/astro",
|
||||
],
|
||||
};
|
||||
5
tsconfig.json
Normal file
5
tsconfig.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": "astro/tsconfigs/strict",
|
||||
"include": [".astro/types.d.ts", "**/*"],
|
||||
"exclude": ["dist"]
|
||||
}
|
||||
Reference in New Issue
Block a user