diff options
| -rw-r--r-- | astro.config.mjs | 6 | ||||
| -rwxr-xr-x | bun.lockb | bin | 341097 -> 293004 bytes | |||
| -rw-r--r-- | package.json | 19 | ||||
| -rw-r--r-- | src/components/3DModels.jsx | 25 | ||||
| -rw-r--r-- | src/components/BlogCommentsForm.jsx | 1 | ||||
| -rw-r--r-- | src/components/FetchMessages.jsx | 2 | ||||
| -rw-r--r-- | src/components/FormHandling.jsx | 2 | ||||
| -rw-r--r-- | src/components/GuestbookForm.jsx | 1 | ||||
| -rw-r--r-- | src/components/Navbar.svelte | 2 | ||||
| -rw-r--r-- | src/data/models.json | 8 | ||||
| -rw-r--r-- | src/data/webarchive.json | 10 | ||||
| -rwxr-xr-x | src/images/snug_cup.png | bin | 0 -> 2177091 bytes | |||
| -rw-r--r-- | src/layouts/Default.astro | 7 | ||||
| -rw-r--r-- | src/pages/archive/index.astro | 21 | ||||
| -rw-r--r-- | src/pages/index.astro | 9 | ||||
| -rw-r--r-- | src/pages/privacy.md | 50 | ||||
| -rw-r--r-- | src/pages/projects/3d.astro | 46 | ||||
| -rw-r--r-- | src/pages/projects/index.astro | 30 | ||||
| -rw-r--r-- | src/pages/projects/programming.astro (renamed from src/pages/projects.astro) | 10 | ||||
| -rw-r--r-- | src/styles/Page.css | 2 | ||||
| -rw-r--r-- | src/styles/cards.css | 2 | ||||
| -rw-r--r-- | src/styles/index.css | 1 | ||||
| -rw-r--r-- | tsconfig.json | 2 |
23 files changed, 223 insertions, 33 deletions
diff --git a/astro.config.mjs b/astro.config.mjs index 5c14eff..04536c5 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,15 +1,13 @@ import { defineConfig, passthroughImageService } from 'astro/config'; import icon from "astro-icon"; +import react from "@astrojs/react"; import vercel from "@astrojs/vercel"; -import preact from "@astrojs/preact"; import svelte from "@astrojs/svelte"; // https://astro.build/config export default defineConfig({ site: 'https://alee14.me', - integrations: [icon(), preact({ - compat: true - }), svelte()], + integrations: [icon(), svelte(), react()], output: "server", adapter: vercel({ webAnalytics: { Binary files differdiff --git a/package.json b/package.json index 3965e45..d0aff9f 100644 --- a/package.json +++ b/package.json @@ -10,20 +10,27 @@ "astro": "astro" }, "dependencies": { - "@astrojs/preact": "4.0.11", - "@astrojs/rss": "4.0.11", - "@astrojs/svelte": "7.0.13", - "@astrojs/vercel": "8.1.4", + "@astrojs/react": "^4.3.1", + "@astrojs/rss": "4.0.12", + "@astrojs/svelte": "7.1.1", + "@astrojs/vercel": "8.2.7", "@iconify-json/fa6-brands": "^1.2.5", "@iconify-json/fa6-solid": "^1.2.3", - "astro": "5.7.10", + "@react-three/drei": "^10.7.6", + "@react-three/fiber": "^9.3.0", + "@types/react": "^19.1.13", + "@types/react-dom": "^19.1.9", + "@types/three": "^0.180.0", + "astro": "5.13.7", "astro-icon": "^1.1.5", "dompurify": "^3.2.5", "markdown-it": "^14.1.0", "marked": "^15.0.11", - "preact": "^10.26.5", + "react": "^19.1.1", + "react-dom": "^19.1.1", "sanitize-html": "^2.16.0", "svelte": "^5.28.2", + "three": "^0.180.0", "typescript": "^5.8.3" } } diff --git a/src/components/3DModels.jsx b/src/components/3DModels.jsx new file mode 100644 index 0000000..4d8507e --- /dev/null +++ b/src/components/3DModels.jsx @@ -0,0 +1,25 @@ +import { Canvas, useLoader } from "@react-three/fiber"; +import { OrbitControls } from "@react-three/drei"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; + +const Model = ({ model, scale }) => { + const gltf = useLoader(GLTFLoader, model); + return ( + <> + <primitive object={gltf.scene} scale={scale} /> + </> + ); +}; + +export default function ThreeJSModels({ modelName, scale = 2 }) { + return ( + <div> + <Canvas style={{ width: '70%', height: '70%', borderRadius: '10px', paddingBottom: '.5em' }}> + <Model model={modelName} scale={scale} /> + <ambientLight intensity={1.5} /> + <directionalLight color="white" position={[0, 2, 0]} /> + <OrbitControls /> + </Canvas> + </div> + ) +} diff --git a/src/components/BlogCommentsForm.jsx b/src/components/BlogCommentsForm.jsx index d0c585c..20e4748 100644 --- a/src/components/BlogCommentsForm.jsx +++ b/src/components/BlogCommentsForm.jsx @@ -1,4 +1,3 @@ -import { h } from 'preact'; import withFormHandling from './FormHandling'; import '../styles/Form.css'; diff --git a/src/components/FetchMessages.jsx b/src/components/FetchMessages.jsx index aa6f261..0a7eea3 100644 --- a/src/components/FetchMessages.jsx +++ b/src/components/FetchMessages.jsx @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { Component } from 'react'; const withMessages = (WrappedComponent, apiEndpoint, FormComponent) => { return class extends Component { diff --git a/src/components/FormHandling.jsx b/src/components/FormHandling.jsx index 8f7f688..5210bdf 100644 --- a/src/components/FormHandling.jsx +++ b/src/components/FormHandling.jsx @@ -1,4 +1,4 @@ -import { Component } from 'preact'; +import { Component } from 'react'; import { marked } from 'marked'; import DOMPurify from 'dompurify'; diff --git a/src/components/GuestbookForm.jsx b/src/components/GuestbookForm.jsx index 4e06a27..7e47b5e 100644 --- a/src/components/GuestbookForm.jsx +++ b/src/components/GuestbookForm.jsx @@ -1,4 +1,3 @@ -import { h } from 'preact'; import withFormHandling from './FormHandling'; import '../styles/Form.css'; diff --git a/src/components/Navbar.svelte b/src/components/Navbar.svelte index 3211799..b90a90e 100644 --- a/src/components/Navbar.svelte +++ b/src/components/Navbar.svelte @@ -107,10 +107,10 @@ <ul class={active ? 'nav-list show' : 'nav-list'}> <li><a href="/" class="nav-link" on:click={toggleNav}>Home</a></li> <li><a href="/projects" class="nav-link" on:click={toggleNav}>Projects</a></li> + <li><a href="https://files.alee14.me" class="nav-link" on:click={toggleNav}>Files</a></li> <li><a href="/blog" class="nav-link" on:click={toggleNav}>Blog</a></li> <li><a href="/guestbook" class="nav-link" on:click={toggleNav}>Guestbook</a></li> <li><a href="/videos" class="nav-link" on:click={toggleNav}>Videos</a></li> -<!-- <li><a href="https://archive.alee14.me" class="nav-link" on:click={toggleNav}>Archive</a></li>--> <li><a href="/contacts" class="nav-link" on:click={toggleNav}>Contacts</a></li> </ul> </nav> diff --git a/src/data/models.json b/src/data/models.json new file mode 100644 index 0000000..8d71642 --- /dev/null +++ b/src/data/models.json @@ -0,0 +1,8 @@ +[ + { + "name": "Snug Cup", + "description": "A cup for a project at school.", + "model": "/models/snug_cup_model.glb", + "fallback": "/images/snug_cup.png" + } +] diff --git a/src/data/webarchive.json b/src/data/webarchive.json new file mode 100644 index 0000000..9a6b1bb --- /dev/null +++ b/src/data/webarchive.json @@ -0,0 +1,10 @@ +[ + { + "name": "First Website", + "description": "Created by my dad using iFrames.", + "type": "personal" + }, + { + "name": "alee14.ga" + } +] diff --git a/src/images/snug_cup.png b/src/images/snug_cup.png Binary files differnew file mode 100755 index 0000000..cd6f7ae --- /dev/null +++ b/src/images/snug_cup.png diff --git a/src/layouts/Default.astro b/src/layouts/Default.astro index 95ceeaf..368f089 100644 --- a/src/layouts/Default.astro +++ b/src/layouts/Default.astro @@ -5,6 +5,7 @@ interface Props { } const { title = "Andrew Lee", description = "Andrew Lee Website" } = Astro.props; +import { ClientRouter } from "astro:transitions"; import Navbar from '../components/Navbar.svelte'; const date = new Date(); --- @@ -40,15 +41,15 @@ const date = new Date(); <script defer data-domain="alee14.me" data-api="/plausible/api/event" src="/plausible/js/script.js"/> <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script> - <!--<ClientRouter fallback="animate" />--> + <ClientRouter fallback="animate" /> <title>{title}</title> </head> <body> <Navbar client:load /> - <div> + <div transition:name="main" transition:animate="fade"> <slot /> <footer> - <p class="small">Made with {Astro.generator} and Hosted on Vercel</p> + <p class="small">Made with Astro and Hosted on Vercel</p> <p>Copyright © {date.getFullYear()} Andrew Lee. <a href="https://github.com/Alee14/personal-website" target="_blank">View source code.</a></p> </footer> </div> diff --git a/src/pages/archive/index.astro b/src/pages/archive/index.astro new file mode 100644 index 0000000..7a23d95 --- /dev/null +++ b/src/pages/archive/index.astro @@ -0,0 +1,21 @@ +--- +import Page from "../../layouts/Page.astro"; +import "../../styles/cards.css"; +--- +<Page title="Website Archive" description="Collection of my old websites"> + <main> + <h1>Personal</h1> + <div class="grid"> + <article class="card"> + <h1>First website</h1> + <p>Created by my dad using iFrames</p> + <small>2013</small> + </article> + <article class="card"> + <h1>alee14.ga</h1> + <p>My first website that I made using Bootstrap 3 with a template</p> + <small>2017</small> + </article> + </div> + </main> +</Page> diff --git a/src/pages/index.astro b/src/pages/index.astro index e7cc46d..d109080 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -37,7 +37,7 @@ const featuredProjects = projects.filter(project => project.featured); </div> <div class="description"> <h2>21 Years Old</h2> - <h2>Living in Montreal, Quebec, Canada</h2> + <h2>Montreal, Quebec, Canada</h2> </div> <div> <h3><a href="mailto:andrew@alee14.me" class="email-contact">andrew@alee14.me</a></h3> @@ -90,13 +90,6 @@ const featuredProjects = projects.filter(project => project.featured); <li>RAM: 4 GB</li> <li>Storage: 206 GB</li> </ul> - <h2>Vultr (Web Server)</h2> - <ul> - <li>OS: Ubuntu Server 24.04 LTS</li> - <li>CPU: Intel Xeon Processor (Skylake, IBRS)</li> - <li>RAM: 1 GB</li> - <li>Storage: 25 GB (and 100 GB for Block Storage)</li> - </ul> <h2>Proxmox</h2> <ul> <li>Model: Lenovo ThinkCentre M800</li> diff --git a/src/pages/privacy.md b/src/pages/privacy.md index e69de29..e81296a 100644 --- a/src/pages/privacy.md +++ b/src/pages/privacy.md @@ -0,0 +1,50 @@ +--- +title: Privacy Policy +description: This policy covers any services provided under alee14.me, including websites, applications, and tools we develop. +layout: '../layouts/PageMarkdown.astro' +--- +# Privacy Policy +Last updated: April 2, 2024 (EDT) + +## Introduction +Privacy is a human right. If you have any concerns or complaints about how we handle privacy, feel free to reach out at privacy@alee14.me. + +## Services We Provide +This policy covers any services provided under alee14.me, including websites, applications, and tools we develop. Below are specific policies for different services. + +### AleeBot (Discord Bot) +**Information Collected:** +- User IDs (for personal settings & command usage) +- Server IDs (to store bot settings & command usage) + +**How We Use It:** +- To provide bot features +- To store preferences per server +- To store preferences per user +- To improve bot performance + +**Opting Out:** +- Removing AleeBot from a server will automatically delete all settings related to that server. +- If you want personal data removed, contact us. + +### Websites & Other Applications +**Information Collected:** +- Basic analytics (e.g., visitor count, page interactions) +- User-submitted content (if applicable) + +**How We Use It:** +- To analyze website performance +- To ensure proper functionality + +## General Data Practices +We don’t collect personal information like your real name, address, or payment details. Data is only used to operate and improve services. + +## Data Retention +We only keep data as long as it’s needed for the service. If you want your data removed, contact us. + +## Future Changes +We may update this policy as we add new services. Any significant changes will be posted here. + +## Contact +For any questions, reach out at privacy@alee14.me. + diff --git a/src/pages/projects/3d.astro b/src/pages/projects/3d.astro new file mode 100644 index 0000000..8f9a06d --- /dev/null +++ b/src/pages/projects/3d.astro @@ -0,0 +1,46 @@ +--- +import Page from "../../layouts/Page.astro"; +import "../../styles/cards.css"; +import ThreeJSModels from "../../components/3DModels.jsx"; +--- +<Page title="3D Models" description="Things that I made using Blender"> + <main> + <div class="grid"> + <div class="card"> + <h1>Test</h1> + <p>Description</p> + <ThreeJSModels modelName="/models/snug_cup_model.glb" client:load /> + <div class="column"> + <a href="#">Download</a> + <small>Licensed with (license)</small> + </div> + </div> + <div class="card"> + <h1>Test</h1> + <p>Description</p> + <ThreeJSModels modelName="/models/alee_logo.glb" client:load /> + <div class="column"> + <a href="#">Download</a> + <small>Licensed with (license)</small> + </div> + </div> + <div class="card"> + <h1>Test</h1> + <p>Description</p> + <!--<ThreeJSModels modelName="/models/snug_cup_model.glb" client:load />--> + <div class="column"> + <a href="#">Download</a> + <small>Licensed with (license)</small> + </div> + </div> + </div> + </main> +</Page> +<style> + .column { + display: flex; + flex-direction: column; + gap: 0.1em; + } +</style> + diff --git a/src/pages/projects/index.astro b/src/pages/projects/index.astro new file mode 100644 index 0000000..9a2dbc7 --- /dev/null +++ b/src/pages/projects/index.astro @@ -0,0 +1,30 @@ +--- +import Page from "../../layouts/Page.astro"; +import "../../styles/cards.css"; +--- +<Page title="Projects" description="Things that I have been working on in the past, and present"> + <main> + <div class="column"> + <div class="card"> + <h1><a href="/projects/3d">3D Models</a></h1> + <p>Things I made on Blender</p> + </div> + <div class="card"> + <h1><a href="/projects/programming">Programming</a></h1> + <p>Things I programmed</p> + </div> + <div class="card"> + <h1><a href="/projects/website">Website Archive</a></h1> + <p>Websites I created</p> + </div> + </div> + </main> +</Page> +<style> + .column { + display: flex; + flex-direction: column; + gap: 0.1em; + } +</style> + diff --git a/src/pages/projects.astro b/src/pages/projects/programming.astro index 80bc97c..2c5d073 100644 --- a/src/pages/projects.astro +++ b/src/pages/projects/programming.astro @@ -1,11 +1,11 @@ --- -import Page from "../layouts/Page.astro"; -import projects from "../data/projects.json"; -import "../styles/cards.css"; -import GitHubProjects from "../components/GitHubProjects.svelte"; +import Page from "../../layouts/Page.astro"; +import projects from "../../data/projects.json"; +import "../../styles/cards.css"; +import GitHubProjects from "../../components/GitHubProjects.svelte"; --- -<Page title="Projects" description="Things that I have been working on in the past, and present"> +<Page title="Programming" description="Things that I programmed"> <main> <div class="grid"> { diff --git a/src/styles/Page.css b/src/styles/Page.css index 59aea44..64b28c7 100644 --- a/src/styles/Page.css +++ b/src/styles/Page.css @@ -41,4 +41,4 @@ h2.header-text { to { opacity: 0; } - }
\ No newline at end of file + } diff --git a/src/styles/cards.css b/src/styles/cards.css index 12e5a3f..7376a54 100644 --- a/src/styles/cards.css +++ b/src/styles/cards.css @@ -1,4 +1,5 @@ .card h1 { + font-size: 1.5em; margin-top: 2px; margin-bottom: 2px; } @@ -14,6 +15,7 @@ .card { background-color: #3B513B; + drop-shadow(2px 3px 5px black); padding: 1.2em; border-radius: 20px; gap: 0.5em; diff --git a/src/styles/index.css b/src/styles/index.css index 0404e7c..f4e5191 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -50,6 +50,7 @@ } .box h1 { + font-size: 1.7em; margin-top: 0.2em; } diff --git a/tsconfig.json b/tsconfig.json index 99df2e6..7fb90fa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,6 @@ "extends": "astro/tsconfigs/base", "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "preact" + "jsxImportSource": "react" } }
\ No newline at end of file |
