A personal portfolio website built with Go, featuring a blog with markdown support and a dark ocean-inspired design. This site replaces a previous version written using 11ty.
Production: charlottebrf.dev
- Dark Theme: Ocean-inspired design with turquoise accents
- Blog System: Markdown-powered blog with status tags (draft/complete)
- Experience Timeline: Professional background showcase
- Responsive Design: Mobile-friendly layout
- Analytics: Privacy-focused tracking with Plausible
- Fast Performance: Lightweight Go server
- Backend: Go with html/template
- Markdown: Custom parser with github.com/gomarkdown/markdown
- Styling: CSS with Grid and Flexbox
- Fonts: Inconsolata (monospace), Lora (serif)
- Deployment: Fly.io
- Analytics: Plausible
charlotte-go-website/
βββ content/
β βββ blog/ # Markdown blog posts
βββ static/
β βββ css/ # Stylesheets
β βββ images/ # Static images
β βββ js/ # JavaScript files
βββ templates/ # HTML templates
βββ parser/ # Markdown parsing logic
βββ main.go # Web server
βββ go.mod # Go dependencies
βββ Dockerfile # Container configuration
- Go 1.24+
- Git
-
Clone the repository
git clone [email protected]:charlottebrf/charlotte-go-website.git cd charlotte-go-website
-
Install dependencies
go mod download
-
Run the server
go run main.go
-
Visit the site Open http://localhost:8080
Create a new markdown file in content/blog/
with the following format:
# Your Post Title
*Published: July 1, 2025*
*Category: Technology*
*Status: draft*
Your blog post content here...
Supported fields:
Published
: Date in "Month Day, Year" formatCategory
: Post categoryStatus
:draft
orcomplete
(shows colored tag)
- Background:
#0d1b2a
(dark ocean blue) - Primary:
#20b2aa
(turquoise) - Text:
#eceff1
(light gray) - Secondary:
#707070
(medium gray)
- Headers: Lora (serif)
- Body: Lora (serif)
- Code/Nav: Inconsolata (monospace)
The site is automatically deployed to Fly.io. To deploy manually:
fly deploy
There is a custom domain setup.
Analytics are provided by Plausible (privacy-focused, GDPR compliant). The tracking script is included in all page templates with the domain charlottebrf.dev
.
PORT
: Server port (defaults to 8080)
Β© 2025 Charlotte Fereday. All rights reserved. See the MIT License relevant for the code and CC by NC ND License for the blog content.