A configurable "link-in-bio" style personal website with server-side rendering and IndieWeb support.
dotme is a personal website application that creates a customizable "link-in-bio" style landing page, and includes IndieWeb markup. It uses server-side rendering with Express.js.
Originally forked from Glitch in Bio, this project has been restructured to use pure server-side rendering without client-side JavaScript frameworks. Content is driven by a single settings.json configuration file and rendered through modular HTML templates.
Key features:
- Server-side rendering with Express.js
- IndieWeb microformat support (h-card, rel attributes)
- Configurable themes and styling
- Progressive Web App (PWA) support
- Social media integration
- Customizable content through a JSON configuration file
git clone https://github.com/yourusername/dotme.git
cd dotme
npm install-
Configure your site by editing
settings.json:{ "name": "Your Name", "bio": "Your bio text", "url": "https://yoursite.com", "links": [...], "social": {...} } -
Start the server:
npm start
-
Visit
http://localhost:3000to view your site.
Edit settings.json to customize your site:
name: Your display namebio: Short biographical texturl: Your primary website URL (used for IndieWeb rel=me)avatarImage: Primary avatar image URLavatarImageAlt: Alternative avatar image (for hover effects)links: Array of links to display on your pagesocial: Social media profile URLstheme: Theme name (corresponds to CSS file inpublic/styles/)
index.html: Main page template with placeholder comments for content injectionsettings.json: Configuration file for all site content and settingstemplates/: HTML template modules that export render functionspublic/styles/: CSS stylesheets including theme filespublic/manifest.jsonandpublic/sw.js: Progressive Web App configuration
Create custom themes by adding CSS files to public/styles/ and specifying the theme name in settings.json. Built-in themes include glitch, gallery, menu, and others.
The deployment section in settings.json controls server configuration:
port: The port number for the Express server (default: 3000)trustProxy: Set totrueif running behind a reverse proxy (nginx, Caddy, etc.) or CDN. This allows the app to correctly detect client IP addresses and HTTPS connections from proxy headers likeX-Forwarded-ForandX-Forwarded-Proto. Set tofalsefor direct deployment.
Direct deployment:
{
"deployment": {
"port": 3000,
"trustProxy": false
}
}Behind reverse proxy:
{
"deployment": {
"port": 3000,
"trustProxy": true
}
}Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
MIT