Initial commit

This commit is contained in:
2024-06-21 00:21:49 +02:00
commit a99f3a4396
38 changed files with 17209 additions and 0 deletions

24
.gitignore vendored Normal file
View File

@@ -0,0 +1,24 @@
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example

2
.npmrc Normal file
View File

@@ -0,0 +1,2 @@
shamefully-hoist=true
strict-peer-dependencies=false

75
README.md Normal file
View File

@@ -0,0 +1,75 @@
# Nuxt UI Minimal Starter
Look at [Nuxt docs](https://nuxt.com/docs/getting-started/introduction) and [Nuxt UI docs](https://ui.nuxt.com) to learn more.
## Setup
Make sure to install the dependencies:
```bash
# npm
npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
```
## Development Server
Start the development server on `http://localhost:3000`:
```bash
# npm
npm run dev
# pnpm
pnpm run dev
# yarn
yarn dev
# bun
bun run dev
```
## Production
Build the application for production:
```bash
# npm
npm run build
# pnpm
pnpm run build
# yarn
yarn build
# bun
bun run build
```
Locally preview production build:
```bash
# npm
npm run preview
# pnpm
pnpm run preview
# yarn
yarn preview
# bun
bun run preview
```
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.

6
app.config.ts Normal file
View File

@@ -0,0 +1,6 @@
export default defineAppConfig({
ui: {
primary: 'lime',
gray: 'neutral',
}
})

12
app/app.config.ts Normal file
View File

@@ -0,0 +1,12 @@
export default defineAppConfig({
ui: {
gray: 'neutral',
primary: 'gray',
container: {
constrained: 'max-w-3xl',
},
icons: {
dynamic: true,
}
}
})

41
app/app.vue Normal file
View File

@@ -0,0 +1,41 @@
<script setup lang="ts">
useSeoMeta({
title: 'Arthur Danjou - Maths lover',
description: 'A Nuxt template to build your full-stack application on the edge.'
})
</script>
<template>
<NuxtLoadingIndicator color="#14b8a6" />
<UContainer>
<AppHeader />
<NuxtPage />
<AppFooter />
</UContainer>
</template>
<style>
body {
font-family: 'DM Sans', sans-serif;
@apply h-full w-full p-0 m-0 text-[#374151] dark:text-[#d1d5db];
}
.sofia {
font-family: 'Sofia Sans', sans-serif;
}
.page-enter-active,
.page-leave-active {
transition: all 0.2s;
}
.page-leave-to {
opacity: 0;
transform: translateY(-5px);
}
.page-enter-from {
opacity: 0;
transform: translateY(5px);
}
</style>

View File

@@ -0,0 +1,46 @@
<script setup lang="ts">
const socials = [
{
icon: 'i-ph-x-logo-bold',
label: 'Twitter',
link: 'https://twitter.com/ArthurDanj',
},
{
icon: 'i-ph-github-logo-bold',
label: 'GitHub',
link: 'https://github.com/ArthurDanjou',
},
{
icon: 'i-ph-linkedin-logo-bold',
label: 'LinkedIn',
link: 'https://www.linkedin.com/in/arthurdanjou/',
}
]
</script>
<template>
<footer class="mb-16">
<div class="flex justify-center my-8">
<UDivider class="md:w-2/3" size="2xs" type="solid" />
</div>
<div>
<h3>Find me on:</h3>
<div class="flex gap-4 my-4">
<HomeLink
v-for="social in socials"
:key="social.label"
:icon="social.icon"
:label="social.label"
:href="social.link"
/>
</div>
<div class="flex gap-2">
<h4>Or send me an email:</h4>
<HomeLink
label="arthurdanjou@outlook.fr"
href="mailto:arthurdanjou@outlook.fr"
blanked />
</div>
</div>
</footer>
</template>

View File

@@ -0,0 +1,65 @@
<script setup lang="ts">
const colorMode = useColorMode()
const isDark = ref(colorMode.value === 'dark')
watch(isDark, () => {
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
})
const navs = [
{
label: 'home',
to: '/',
icon: 'i-ph-house-bold'
},
{
label: 'uses',
to: '/uses',
icon: 'i-ph-briefcase-bold'
},
{
label: 'writings',
to: '/writings',
icon: 'i-ph-newspaper-bold'
},
{
label: 'resume',
to: '/resume.pdf',
target: '_blank',
icon: 'i-ph-person-arms-spread-bold'
}
]
</script>
<template>
<header class="flex justify-between my-8">
<div>
Logo
</div>
<div class="flex gap-2 items-center">
<div v-for="nav in navs" :key="nav.label">
<UTooltip :text="nav.label">
<UButton
:icon="nav.icon"
:to="nav.to"
variant="link"
color="gray"
size="sm"
:target="nav.target ? nav.target : '_self'"
dynamic
/>
</UTooltip>
</div>
<ClientOnly>
<UTooltip text="switch theme">
<UButton
:icon="isDark ? 'i-lucide:moon' : 'i-lucide:sun'"
variant="link"
color="gray"
size="sm"
@click="isDark = !isDark"
/>
</UTooltip>
</ClientOnly>
</div>
</header>
</template>

View File

@@ -0,0 +1,17 @@
<script setup lang="ts">
defineProps({
icon: {
type: String,
required: true,
}
})
</script>
<template>
<div class="inline">
<UIcon class="mb-1 mr-1" :name="icon" :dynamic="true" />
<span class="sofia font-medium">
<slot />
</span>
</div>
</template>

View File

@@ -0,0 +1,30 @@
<script setup lang="ts">
defineProps({
label: {
type: String,
required: true
},
href: {
type: String,
required: true
},
icon: {
type: String,
},
blanked: {
type: Boolean,
default: false
}
})
</script>
<template>
<NuxtLink
:href="href"
:target="blanked ? '_blank' : '_self'"
class="sofia border-b border-gray-200 hover:border-black duration-300 dark:border-neutral-800 dark:hover:border-white flex gap-1 items-center pb-.5"
>
<Icon v-if="icon" :name="icon" size="20"/>
<span class="font-bold text-md text-black dark:text-white">{{ label }}</span>
</NuxtLink>
</template>

5
app/pages/index.vue Normal file
View File

@@ -0,0 +1,5 @@
<template>
<main class="!max-w-none prose dark:prose-invert mt-12">
<ContentDoc path="/" />
</main>
</template>

13
app/pages/uses.vue Normal file
View File

@@ -0,0 +1,13 @@
<script setup lang="ts">
</script>
<template>
<div>
<h1>Uses</h1>
</div>
</template>
<style scoped>
</style>

View File

@@ -0,0 +1,13 @@
<script setup lang="ts">
</script>
<template>
<div>
<h1>Writings</h1>
</div>
</template>
<style scoped>
</style>

19
content/index.md Normal file
View File

@@ -0,0 +1,19 @@
# Arthur Danjou
Hey, I'm Arthur Danjou, a mathematics student at the Paris-Saclay Faculty of Science in France.
With a **deep understanding of emerging technologies**, I'm at the heart of a rapidly expanding field. My background in **mathematics** gives me a head start in understanding the concepts and theories behind these **technologies** and in designing them effectively.
As a software engineer and mathematics student, my **expertise** covers
<AIcon icon="i-logos:typescript-icon">TypeScript</AIcon>,
<AIcon icon="i-logos:vue">Vue</AIcon>,
<AIcon icon="i-logos:nuxt-icon">Nuxt</AIcon>,
<AIcon icon="i-logos:adonisjs-icon">Adonis</AIcon>,
<AIcon icon="i-logos:java">Java</AIcon>,
<AIcon icon="i-logos:python">Python</AIcon>,
<AIcon icon="i-logos:r-lang">R</AIcon>, which enables me to **understand** the different needs of mathematical projects and to propose the best solutions.
I'm **constantly** learning new things, from technology to finance and entrepreneurship. I love **sharing** my knowledge and learning new theorems and technologies. I'm a **curious** person and eager to continue learning and growing throughout my life.
As well as programming, I enjoy **sport** and **travelling**. My passion, commitment and eagerness to learn and progress are the qualities that enable me to succeed in my **career** and **studies**.

View File

@@ -0,0 +1,5 @@
{
"name": "Apple AirPods Pro",
"description": "Probably my most used item after my phone and laptop. I use them for everything from listening to music to taking calls. They are super convenient and the sound quality is great.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Apple iPad Air",
"description": "I use my iPad to read books, watch movies, and browse the web, but also to take notes and write some equations during my math classes.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Apple iPhone 14 Pro",
"description": "I don't upgrade my phone every year, but when I do, I go for the best. The iPhone 14 Pro is the best phone on the market, and I'm excited to get my hands on it.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Custom Built Gaming PC",
"description": "I have bought a customized computer for the gaming. I have chosen an Intel Core i5-10400F, with 16Go DDR4 and my graphical card is a RTX 2060. I use Windows 11.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Apple Suite",
"description": "I'm using the Apple Suite including Mail, Calendar, Notes, Music and Reminders for my daily organization.",
"category": "software"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Discord",
"description": "I'm using Discord for chatting and talking with my friends and my customers and discussing with some community members.",
"category": "software"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Apple MacBook Pro 13'",
"description": "My main programming computer is a MacBook Pro 13' 2020 with the Apple M1 Chip and 16Go RAM. I use MacOS Sorona.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Google Chrome",
"description": "I'm using Google Chrome for browsing, the dev tool, and the extension market.",
"category": "software"
}

View File

@@ -0,0 +1,5 @@
{
"name": "JetBrains Suite (IntelliJ IDEA Ultimate, PyCharm Professional, WebStorm, DataGrip)",
"description": "I use JetBrains Suite for development for 7 years. It's the best IDEs for Java, Python, JavaScript, SQL, and more. I used this suite to develop and to create this website.",
"category": "IDEs"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Logitech G203 LightSync Black",
"description": "This gaming mouse is designed to be the perfect gaming companion. With a classic design and simple layout, this mouse is perfect for any gamer.",
"category": "hardware"
}

5
content/uses/notion.json Normal file
View File

@@ -0,0 +1,5 @@
{
"name": "Notion",
"description": "Notion is my all-in-one note-taking, kanban boards, wikis, and draft notebook.",
"category": "software"
}

View File

@@ -0,0 +1,5 @@
{
"name": "RayCast",
"description": "Raycast is my extendable launcher replacing Apple Spotlight. It lets me complete tasks, calculate, share common links, and much more thanks to the extensions.",
"category": "software"
}

View File

@@ -0,0 +1,5 @@
{
"name": "SteelSeries Apex 9 TKL",
"description": "This TKL keyboard is a great choice for gamers who want a compact keyboard with a lot of features.",
"category": "hardware"
}

View File

@@ -0,0 +1,5 @@
{
"name": "Theme and Font",
"description": "My theme is Catppuccin Macchiato, a community-driven pastel theme that aims to be the middle ground between low and high contrast themes. My main fonts are Vercel Geist and JetBrains Mono",
"category": "IDEs"
}

5
content/uses/warp.json Normal file
View File

@@ -0,0 +1,5 @@
{
"name": "Warp",
"description": "Warp is a modern, Rust-based terminal reimagined with AI and collaborative tools for better productivity. I'm loving it so far!",
"category": "hardware"
}

6
eslint.config.mjs Normal file
View File

@@ -0,0 +1,6 @@
// @ts-check
import withNuxt from './.nuxt/eslint.config.mjs'
export default withNuxt(
// Your custom configs here
)

60
nuxt.config.ts Normal file
View File

@@ -0,0 +1,60 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
future: { compatibilityVersion: 4 },
modules: [
'@nuxthub/core',
'@nuxt/eslint',
'@nuxt/ui',
'@nuxt/content',
'@vueuse/nuxt',
"@nuxtjs/google-fonts"
],
hub: {
cache: true,
},
app: {
pageTransition: { name: "page", mode: "out-in" },
},
content: {
highlight: {
theme: "github-dark",
},
},
colorMode: {
preference: "light",
fallback: "light",
},
ui: {
icons: ["heroicons", "logos", "ph"],
},
devtools: {
enabled: true,
timeline: { enabled: true, }
},
eslint: {
config: {
stylistic: {
quotes: 'single',
commaDangle: 'never'
}
}
},
googleFonts: {
display: "swap",
families: {
Inter: [400, 500, 600, 700, 800, 900],
'Sofia Sans': [400],
'DM Sans': [400, 500, 600, 700, 800, 900],
},
},
})

34
package.json Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "artsite",
"private": true,
"packageManager": "pnpm@9.4.0",
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev --host",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare",
"lint": "eslint ."
},
"dependencies": {
"@iconify/json": "^2.2.221",
"@nuxt/content": "^2.13.0",
"@nuxt/eslint": "^0.3.13",
"@nuxt/ui": "^2.17.0",
"@nuxthub/core": "^0.6.17",
"@nuxtjs/google-fonts": "^3.2.0",
"nuxt": "^3.12.2"
},
"devDependencies": {
"@nuxt/devtools": "latest",
"@nuxt/eslint-config": "^0.3.13",
"@nuxt/ui": "^2.17.0",
"@types/node": "^20.14.6",
"@vueuse/core": "^10.11.0",
"@vueuse/nuxt": "^10.11.0",
"eslint": "^9.5.0",
"typescript": "^5.5.2",
"vue-tsc": "^2.0.21",
"wrangler": "^3.61.0"
}
}

12275
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

4364
public/resume.pdf Normal file

File diff suppressed because it is too large Load Diff

3
server/tsconfig.json Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": "../.nuxt/tsconfig.server.json"
}

20
tailwind.config.ts Normal file
View File

@@ -0,0 +1,20 @@
import type { Config } from "tailwindcss"
import typography from "@tailwindcss/typography"
export default <Partial<Config>>{
content: [
'./components/**/*.{vue,js,ts}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./composables/**/*.{js,ts}',
'./plugins/**/*.{js,ts}',
'./utils/**/*.{js,ts}',
'./App.{js,ts,vue}',
'./app.{js,ts,vue}',
'./Error.{js,ts,vue}',
'./error.{js,ts,vue}',
'./app.config.{js,ts}',
'content/**/*.md'
],
plugins: [typography],
}

4
tsconfig.json Normal file
View File

@@ -0,0 +1,4 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
}