Artsite
š My personal website, my portfolio, and my blog. š Built and powered by Nuxt Stack (Content, Hub, Studio, UI) & Nitro
Install / Use
/learn @ArthurDanjou/ArtsiteREADME
Arthur Danjou | Portfolio 2024
My professional portfolio built with modern Nuxt.js technologies, showcasing projects, skills, and experience.
š Live Demo | š Report Bug
</div>š Table of Contents
- Features
- Tech Stack
- Prerequisites
- Getting Started
- Development
- Environment Variables
- Project Structure
- Integrations
- Deployment
- Contributing
- License
- Contact
⨠Features
- Responsive Design - Fully responsive layout that works on all devices
- i18n Support - Multilanguage content with Nuxt i18n
- Content Management - Easy content editing with Nuxt Content and Nuxt Studio
- Modern Styling - Beautiful UI built with Tailwind CSS and SASS
- Performance Optimized - Fast loading times and SEO optimized
- Analytics - WakaTime integration to track coding statistics
- Discord Integration - Real-time Discord status display
- CI/CD - Automated deployment with NuxtHub
āļø Tech Stack
- UI Framework ā Vue.js 3
- Framework ā Nuxt 3
- Content Management ā Nuxt Content
- Design System ā NuxtUI
- CMS & Editing ā Nuxt Studio
- Language ā TypeScript
- Deployment ā NuxtHub on Cloudflare
- Styling ā Sass & Tailwind CSS
- Package Manager ā Bun
- Internationalization ā Nuxt i18n
- Database ā Cloudflare D1 (SQLite)
- Composables ā VueUse
- Validation ā Zod
- Icons ā Iconify
š¦ Prerequisites
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher recommended)
- Bun (latest version) - Install Bun
- Git for version control
- Cloudflare Account (for deployment)
š Getting Started
-
Clone the repository
git clone https://github.com/ArthurDanjou/artsite.git cd artsite -
Install dependencies
bun install -
Set up environment variables
cp .env.example .envThen edit
.envand fill in your configuration values (see Environment Variables section). -
Start the development server
bun run devThe application will be available at
http://localhost:3000š
š» Development
Available Scripts
# Start development server
bun run dev
# Build for production
bun run build
# Preview production build locally
bun run preview
# Lint code
bun run lint
# Deploy to Cloudflare
bun run deploy
# Generate Cloudflare types
bun run cf-typegen
Project Configuration
The project uses:
- ESLint for code linting with stylistic rules (single quotes, no trailing commas)
- TypeScript for type safety
- Nuxt DevTools enabled for enhanced development experience
š Environment Variables
Create a .env file in the root directory with the following variables:
# GitHub Studio Integration (for content management)
STUDIO_GITHUB_CLIENT_ID=your_github_client_id
STUDIO_GITHUB_CLIENT_SECRET=your_github_client_secret # Keep this secret! Never commit to version control
# Discord Integration (runtime config - keep private)
NUXT_DISCORD_USER_ID=your_discord_user_id # Private
# WakaTime Integration (for coding statistics - keep private)
NUXT_WAKATIME_USER_ID=your_wakatime_user_id # Private
NUXT_WAKATIME_CODING=your_coding_stats_api # Private
NUXT_WAKATIME_EDITORS=your_editors_stats_api # Private
NUXT_WAKATIME_LANGUAGES=your_languages_stats_api # Private
NUXT_WAKATIME_OS=your_os_stats_api # Private
# Status Page URL
NUXT_STATUS_PAGE=your_status_page_url
Note: Not all variables are required for basic development. The site will work without integrations, but some features may be disabled.
Security: Never commit your
.envfile or expose sensitive credentials likeSTUDIO_GITHUB_CLIENT_SECRET. Keep all API keys and secrets secure.
š Project Structure
artsite/
āāā app/ # Application source code
ā āāā assets/ # Static assets (CSS, images)
ā āāā components/ # Vue components
ā ā āāā content/ # Content-specific components
ā ā āāā home/ # Home page components
ā āāā composables/ # Vue composables
ā āāā pages/ # Application pages (file-based routing)
ā ā āāā index.vue # Home page
ā ā āāā projects/ # Projects section
ā ā āāā hobbies.vue # Hobbies page
ā ā āāā uses.vue # Uses page
ā ā āāā ecosystem.vue # Ecosystem page
ā āāā app.config.ts # App configuration
ā āāā app.vue # Root app component
ā āāā error.vue # Error page
āāā content/ # Content files (Markdown & JSON)
ā āāā education/ # Education content
ā ā āāā bachelor.md # Bachelor's degree information
ā ā āāā m1.md # Master's 1st year information
ā ā āāā m2.md # Master's 2nd year information
ā āāā experiences/ # Professional experience content
ā ā āāā artdanjproduction.md
ā ā āāā erisium.md
ā ā āāā hackathon-cnd.md
ā ā āāā picard.md
ā ā āāā sevetys.md
ā āāā projects/ # Project portfolio content
ā ā āāā artchat.md
ā ā āāā arthome.md
ā ā āāā artlab.md
ā ā āāā artstudies.md
ā ā āāā bikes-glm.md
ā ā āāā breast-cancer.md
ā ā āāā dropout-reduces-underfitting.md
ā ā āāā loan-ml.md
ā ā āāā monte-carlo-project.md
ā ā āāā schelling-segregation-model.md
ā ā āāā sevetys.md
ā āāā contact.json # Contact information data
ā āāā hobbies.md # Hobbies page content
ā āāā index.md # Home page content
ā āāā languages.json # Programming languages data
ā āāā skills.json # Skills and expertise data
ā āāā uses.md # Tools and software used
āāā public/ # Public static files
āāā server/ # Server API routes and middleware
ā āāā api/ # API endpoints
ā āāā routes/ # Server routes
āāā types/ # TypeScript type definitions
āāā .env.example # Example environment variables
āāā content.config.ts # Content module configuration
āāā nuxt.config.ts # Nuxt configuration
āāā package.json # Dependencies and scripts
āāā tsconfig.json # TypeScript configuration
āāā wrangler.jsonc # Cloudflare Workers configuration
āāā README.md # Project documentation
š Integrations
- WakaTime - Track coding time and statistics
- Discord - Display real-time Discord status
- Nuxt Studio - Headless CMS for content management
- Nuxt i18n - Internationalization support
- NuxtHub - CI/CD and deployment platform
- Cloudflare D1 - Serverless SQL database
š¢ Deployment
This project is configured to deploy on Cloudflare using NuxtHub.
Deploy to Production
-
Prerequisites
- Cloudflare account
- Wrangler CLI configured (
wrangler login) - NuxtHub project created
-
Deploy
bun run deployThis will:
- Generate Cloudflare types
- Build the application
- Deploy to Cloudflare Workers
Automatic Deployments
The project is set up with NuxtHub for automatic deployments on push to the main branch.
š¤ Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature - Make your changes
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature - Open a Pull Request
Development Guidelines
- Follow the existing code style (enforced by ESLint)
- Use TypeScript for type safety
- Write descriptive commit messages
- Test your changes locally before submitting
- Update documentation if needed
š License
MIT Ā© Arthur Danjou
š¬ Contact
- Website: arthurdanjou.fr
- GitHub: @ArthurDanjou
- LinkedIn: Arthur Danjou
