Personal portfolio website for Fredrick Amnehagen - advertising to potential employers
- HTML 100%
| public | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
Fredrick Amnehagen Portfolio Website
A personal portfolio website designed to showcase professional experience, skills, and achievements to potential employers and other interested parties.
Tech Stack
- Backend: Laravel 12.x with Inertia.js
- Frontend: Vue 3 with Composition API
- Styling: Tailwind CSS with Material Design and Gestalt design principles
- Database: PostgreSQL
- Cache: Valkey (Redis alternative)
- Object Storage: Garage (S3-compatible)
- Analytics: Umami
- Email: Laravel Mail (SMTP)
Project Structure
├── app/ # Laravel application
│ ├── Http/ # Controllers, Middleware
│ ├── Models/ # Eloquent models
│ └── ...
├── bootstrap/ # Laravel bootstrap files
├── config/ # Configuration files
├── database/ # Migrations and seeders
├── public/ # Public assets
├── resources/ # Views, JS, CSS
│ ├── js/ # Vue components
│ └── css/ # Tailwind styles
├── routes/ # Route definitions
├── storage/ # Logs, cache, etc.
└── vendor/ # Composer dependencies
Getting Started
Prerequisites
- PHP 8.4+
- Composer
- Node.js 20+
- PostgreSQL 15+
- Valkey
- Garage (S3)
Installation
-
Clone the repository:
git clone ssh://git@forgejo.loopaware.com:2222/fredrick/fredrick-amnehagen-com-site.git cd fredrick-amnehagen-com-site -
Install PHP dependencies:
composer install -
Install Node.js dependencies:
npm install -
Copy environment file:
cp .env.example .env -
Configure environment variables in
.env:DB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE=fredrick_portfolio DB_USERNAME=fredrick_user DB_PASSWORD=your_secure_password CACHE_DRIVER=valkey QUEUE_CONNECTION=valkey S3_KEY=your_garage_key S3_SECRET=your_garage_secret S3_ENDPOINT=http://garage:8000 S3_REGION=local S3_BUCKET=portfolio MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null -
Generate application key:
php artisan key:generate -
Run migrations:
php artisan migrate -
Build frontend assets:
npm run build -
Start the development server:
php artisan serve
Design System
Color Palette
The site uses a Material Design and Gestalt-inspired palette with smooth animations:
- Primary: Deep Blue (#1565C0)
- Secondary: Teal (#00897B)
- Accent: Amber (#FFB300)
- Background: Light Gray (#FAFAFA) / Dark (#121212)
- Surface: White (#FFFFFF) / Dark Gray (#1E1E1E)
- Text: Dark (#212121) / Light (#FAFAFA)
Typography
- Headings: Inter (sans-serif)
- Body: Inter (sans-serif)
- Code: JetBrains Mono
Animations
- Smooth transitions (300ms ease-in-out)
- Subtle hover effects
- Page load animations
- Scroll-triggered reveals
Features
- Responsive design (mobile-first)
- Dark/Light mode toggle
- Skills and experience showcase
- Project portfolio
- Contact form
- Analytics integration (Umami)
- PDF resume download
License
This project is licensed under the GNU General Public License v2.0 only. See the LICENSE file for details.
Author
Fredrick Amnehagen
- Email: fredrick@loopaware.com
- Website: https://fredrick.amnehagen.com
- GitHub: https://github.com/fredrick
Acknowledgments
- Design inspired by Material Design guidelines
- Gestalt principles for visual organization
- Laravel and Vue.js communities