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:3000
to 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.json
andpublic/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 totrue
if 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-For
andX-Forwarded-Proto
. Set tofalse
for 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