A Next.js + Tailwind CSS portfolio that re-creates the Ubuntu 20.04 desktop inside your browser
Live Demo: https://ubuntu.dawidolko.pl
- About
- Project Structure
- Star History
- Getting Started
- Customization Guide
- Scripts & Commands
- Contributing
- License & Author
ubuntu.dawidolko.pl
is an open-source, desktop-themed portfolio that mimics Ubuntu 20.04’s GNOME shell: a dock, draggable windows, themed apps and a dark-orange palette.
It’s built with Next.js (React), Tailwind CSS, and ships as a fully static site—perfect for free hosting on GitHub Pages. 🦄🖥️
Key features:
- ✅ Next.js for server-side rendering & static export
- 🎨 Tailwind CSS for utility-first styling
- ✉️ EmailJS-powered contact form (no backend needed)
- ⚙️ Config-driven apps defined in
apps.config.js
- 📱 Responsive and PWA-ready
.
├── .next/ # Next.js build output
├── .github/ # Actions & issue templates
├── .vscode/ # Dev-container & tasks
├── components/ # Re-usable React components
├── files/ # Static sample documents
├── images/ # Icons & wallpapers
├── pages/ # Next.js pages & API routes
├── public/ # Public assets served at /
├── styles/ # Global Tailwind styles
├── themes/ # Theme tokens / CSS vars
├── apps.config.js # Dock & window definitions
├── tailwind.config.js # Tailwind setup
├── package.json # NPM metadata & scripts
├── README.md # You are here!
└── yarn.lock | package-lock.json
Requires Node 18 + and npm (or yarn / pnpm).
# 1 – Clone the repo
git clone https://github.com/dawidolko/Ubuntu-Simulaing-System-GUI
cd Ubuntu-Simulaing-System-GUI
# 2 – Install dependencies
npm install # or yarn / pnpm
# 3 – Run the dev server
npm start # opens http://localhost:3000
npm run build # generates an optimised /.next bundle
npm run export # exports static HTML to /out for GitHub Pages
What you want to change | File(s) to edit |
---|---|
Apps & dock icons | apps.config.js |
Theme colours | themes/ubuntu.css or Tailwind config |
Contact-form keys | .env → NEXT_PUBLIC_USER_ID , NEXT_PUBLIC_SERVICE_ID , NEXT_PUBLIC_TEMPLATE_ID |
Portfolio texts | Components in pages/ and components/ |
Favicons / logos | Replace images in public/ |
EmailJS setup
Create an account at https://emailjs.com
Add a Gmail / Outlook service → grab Service ID
Create a template → grab Template ID
In your EmailJS dashboard copy User ID
Add them to a
.env
at the project root:NEXT_PUBLIC_USER_ID=xxxxxxxx NEXT_PUBLIC_SERVICE_ID=xxxxxxxx NEXT_PUBLIC_TEMPLATE_ID=template_fqqqb9g
Command | What it does |
---|---|
npm start |
Runs Next.js in development mode with hot-reload |
npm run build |
Creates an optimised production build |
npm run export |
Converts the site into static HTML in /out |
npm run lint |
Runs ESLint on source files |
npm run format |
Formats code with Prettier |
If you prefer yarn simply replace
npm
withyarn
.
All kinds of contributions are warmly welcome:
- Fork →
git clone
git checkout -b feat/amazing-feature
- Code, test,
npm run lint
git commit -m "Add amazing feature"
git push origin feat/amazing-feature
- Open a Pull Request 🚀
Please attach screenshots or GIFs when altering the UI.
-
License: MIT – free to use, tweak, and share 🔓
-
Author: Dawid Olko
- Portfolio https://dawidolko.pl
- GitHub https://github.com/dawidolko
- LinkedIn https://www.linkedin.com/in/dawidolko/
Crafted with ☕, 🎧 and a dash of open-source spirit in honour of Ubuntu’s friendly orange glow.