current project structure
TimeInsightsAPI/
- public/
- favicon.ico
- robots.txt
- src/
- components/
- DashboardCard.jsx
- DashboardCard.css
- ProgressRing.jsx
- ProgressRing.css
- ErrorBoundary.jsx
- services/
- digidates.js
- utils/
- dateUtils.js
- errorHandler.js
- views/
- Dashboard.jsx
- Dashboard.css
- App.jsx
- App.css
- index.css
- main.jsx
- components/
- .gitignore
- index.html
- package.json
- ReadMe.md
- setupScript.sh
- vite.config.js
TimeInsightsAPI is a repository containing Time Insights Dashboard , this is my attempt a creating a modern React-based web application that provides real-time (5-10sec request intervals) data open sourced through DigiDates.de. This dashboard displays 4 key time related metrics sourced from the DigiDates.de REST API. Built with Vite for optimal performance and development experience, the application features a responsive grid layout, automatic data refresh, and robust error handling. Through clean, minimal, simplistic design this ensures an intuitive user experience on the client side while demonstrating techincal proficiency in React hooks, API integration, and modern JavaScript development practices on the host side.
upon launching npm run dev
- Entry Point Initialization : (
index.html->main.jsx)
- browser launches and loads
index.htmlas the application entry point main.jsxmounts the React application to the DOM root element- ErrorBoundary wraps the entire application for graceful error handling
- Application Boostrap : (
main.jsx->App.jsx)
App.jsxrenders the main application structure with header, main content, and footer- Global CSS styles are applied for consistent theming + responsiveness
- Dashboard Initialization : (
App.jsx->Dashboard.jsx)
Dashboard.jsxcomponent mounts and initializes state management- API testing function executes immediately to verify endpoint connectivity
- Data Fetching Sequence : (
Dashboard.jsx->digidates.js)
- Concurrent API calls via
Promise.all()to fetch time data from multiple endpoints - Service functions in
digidates.jshandle API communication and response parsing - Utility functions from
dateUtils.jsformat and process data
- Component Rendering : (
Dashboard.jsx-> all files incomponents/)
- Conditional rendering based on loading / error states
- Data visualization through specialized components in
ProgressRing.jsx - Consistent card-based layout via reusable
DashboardCard.jsxcomponents
- Continuous Operation :
setIntervalinsrc\views\Dashboard.jsxmaintains automatic data refresh every 30 seconds- Real-time updates without requiring page reloads
- Error boundaries captures and display any & all runtime exceptions
- Real-time Unix Time Display : current timestamp with formatting
- ISO Week Number Tracking : an accurate week calculation with visual presentation
- Leap Year Detection : instant verification of current year's leap status
- Annual Progress Visualization : an animated circular progress indicator showing the (current) year's completion
- Responsive Design : an adaptable grid layout for desktop & mobile
- Automatic Refresh : background data updates
- Error Resilience : comprehensive error handling & coverage
- Modern UI/UX : clean minimalist design with smooth animations + effects
- API monitering : built-in endpoint testing & validation to detect potential issues
Asahi Linux (Fedora)
sudo dnf updatesudo dnf install gitsudo dnf install nodejsgit --versionverifies installationnode --versionverifies installationnpm --versionverifies installation
Windows
- download Git , run installer and follow the setup instructions
- download Node.js , run installer and follow the setup instructions
- open CommandPrompt
Windows + cmd + enter git --versionverifies installationnode --versionverifies installationnpm --versionverifies installation
MacOS
- open terminal and enter
brew --versionif exists skip next step - download Homebrew , run installer and follow setup instructions
- open terminal ,
brew install git,brew install node git --versionverifies installationnode --versionverifies installationnpm --versionverifies installation
Asahi Linux (Fedora)
update
Windows
update
MacOS
cdinto desired location locally to store projectgit clonethe repository locally , cd innpm installfor any dependenciesnpm run devto start & launch development server (localhost:3000)- inspect output within browser's console for debugging
This portion is for logging or storing notes relevent to the project and its scope. Future implementations
-
add all 5 card varients (bare bones functionality) + intro card use HTML5 Canvas, CSS animations, or libraries like p5.js are perfect for smooth, custom animations
- custom timer w/ all varients
- todo w/ (italics,bold) and on completion (strikethrough)
- weather ?
- random name picker
-
work on individual cards + css + animations + logic
-
update ReadMe.md + compilation