Modern Start Page
April 4, 2026 ยท View on GitHub
A modern, customizable browser start page built with Astro and React. Features a clean UI, multiple search engines, theme switching, and persistent configuration. Perfect for self-hosted server dashboards and new tab pages.

Note: This project was heavily influenced by SUI, a start page that served as my daily driver for many years. After 5-6 years since its last update, I decided to modernize the concept with current web technologies while maintaining its core functionality and simplicity.
Features
- ๐จ Multiple pre-defined themes with easy customization
- ๐ Support for multiple search engines
- ๐ฑ Responsive design that works on all devices
- ๐ฆ Simple JSON-based configuration
- ๐ณ Easy Docker deployment
- ๐ Persistent configuration with file-based storage
- ๐ฏ Clean, modern UI with Lucide icons
- โก Fast and lightweight
- ๐ค๏ธ Widget support (Weather, Clock, and more to come)
Getting Started
Prerequisites
- Node.js (v18 or higher)
- npm or yarn
- OpenWeather API key (for weather widget)
Installation
- Clone the repository:
git clone https://github.com/ericblue/modern-start-page.git
cd modern-start-page
- Install dependencies:
npm install
- Create a
.envfile based on.env.exampleand add your OpenWeather API key:
cp .env.example .env
# Edit .env and add your OpenWeather API key
- Start the development server:
npm run dev
- Build for production:
npm run build
Configuration
The application uses a simple JSON file storage system for configuration. Here's the default configuration structure:
{
"contexts": [
{
"id": "default",
"name": "Default",
"categories": [
{
"name": "Development",
"displayMode": "icon",
"links": [
{
"name": "GitHub",
"url": "https://github.com",
"icon": "github"
},
{
"name": "GitLab",
"url": "https://gitlab.com",
"icon": "gitlab"
}
]
},
{
"name": "Social",
"displayMode": "icon",
"links": [
{
"name": "Twitter",
"url": "https://twitter.com",
"icon": "twitter"
},
{
"name": "Reddit",
"url": "https://reddit.com",
"icon": "reddit"
}
]
}
]
}
],
"activeContext": "default",
"theme": "dark",
"gridColumns": 4,
"displayMode": "icon",
"showCategoryBorders": true,
"widgets": {
"weather": {
"enabled": true,
"useCelsius": false
},
"clock": {
"enabled": true,
"showSeconds": true
}
}
}
Widgets
The start page includes several widgets that can be enabled/disabled and customized:
-
Weather Widget: Shows current weather conditions based on your location
- Requires an OpenWeather API key
- Can toggle between Celsius and Fahrenheit
- Automatically detects your location
-
Clock Widget: Displays the current time
- Can show/hide seconds
- Updates in real-time
Widget settings can be configured through the settings modal, where you can:
- Enable/disable individual widgets
- Configure widget-specific settings
- Customize the appearance and behavior
Customization Options
- Theme selection (Dark/Light)
- Layout customization (grid columns, display mode)
- Quick links management with icons
- Search engine preferences
- Multiple contexts for different use cases
- Category-based organization
Docker Support
The application can be run in a Docker container:
# Build the image
docker build -t modern-start-page:latest .
# Run the container
docker run -p 4000:4000 modern-start-page:latest
Setting as Default Home Page
Google Chrome
- Click the three-dot menu (โฎ) in the top-right corner
- Go to Settings
- Under "On startup", select "Open a specific page or set of pages"
- Click "Add a new page"
- Enter your Modern Start Page URL (e.g.,
http://localhost:4000or your deployed URL) - Click "Add"
Mozilla Firefox
- Click the three-line menu (โฐ) in the top-right corner
- Go to Settings
- Under "Home" section, find "Homepage and new windows"
- Select "Custom URLs..."
- Enter your Modern Start Page URL (e.g.,
http://localhost:4000or your deployed URL) - Click "Save"
Safari
- Click Safari in the menu bar
- Go to Settings (or Preferences)
- Select the "General" tab
- In the "Homepage" field, enter your Modern Start Page URL (e.g.,
http://localhost:4000or your deployed URL) - Close the settings window
Note: If you're running Modern Start Page locally, make sure to use the correct port number (default is 4000). For production deployments, use your deployed URL.
Version History
| Version | Date | Description |
|---|---|---|
| v0.1.0 | 2025-04-06 | Initial release - Astro/React start page with themes, search engines, widgets, Docker support |
| v0.2.0 | 2026-04-04 | Security hardening - Alpine base image, Node 22 LTS, pruned build-only deps, standalone server |
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Created by Eric Blue (https://ericblue.com)