A desktop application built with Electron that provides statistical analysis and visualization of UniboCalendar usage data. The app downloads data from a remote database and displays various charts and statistics about user enrollments, course popularity, and usage patterns.
|
|
- Real-time Data Analysis: Downloads and analyzes data from UniboCalendar database
- Interactive Charts: Visualizes enrollment statistics, daily usage patterns, and course popularity
- User Analytics: Shows active users, enrollment details, and user behavior patterns
- Cross-platform: Works on macOS, Windows, and Linux
Before building and running this application, make sure you have the following installed:
- Node.js (version 18 or higher) - Required for modern Electron and security
- npm (version 8 or higher) - Comes with Node.js
- Git (for cloning the repository)
-
Clone the repository (if you haven't already):
git clone <repository-url> cd UniboCalendarStats
-
Install dependencies:
npm install
-
Fix security vulnerabilities (optional but recommended):
npm run audit-fix
To run the app in development mode:
npm startThis will start the Electron application using electron-forge start.
Alternatively, you can run it directly with Electron:
npm run devThis runs the app directly with electron src/main/main.js.
To build a macOS application:
npm run makeThis will create a DMG file in the out/make/ directory that works on both Intel and Apple Silicon Macs.
If you specifically need an Intel-only build:
npm run buildThis will create the app in the out/ directory using electron-packager.
The app is configured to build for multiple platforms:
- Windows: Creates a Squirrel installer
- Linux: Creates DEB and RPM packages
- macOS: Creates DMG and ZIP files
Run npm run make to build for all configured platforms.
UniboCalendarStats/
├── src/
│ ├── main/ # Main process files
│ │ ├── main.js # Main Electron process entry point
│ │ ├── model.js # Data processing and database operations
│ │ └── preload.js # Preload script for secure communication
│ ├── renderer/ # Renderer process files
│ │ ├── index.html # Main UI
│ │ ├── window.js # Renderer process logic
│ │ └── style.css # Application styles
│ └── assets/ # Static assets
│ ├── icon.icns # Application icon
│ └── insegnamenti.sqlite # Local database for course information
├── package.json # Project configuration and dependencies
├── .gitignore # Git ignore rules
└── README.md # This file
- Electron: Desktop application framework (v28+ for security)
- sqlite3: Database operations
- node-fetch: HTTP requests for data downloading (v3+ with ESM support)
- Chart.js: Data visualization
- Bootstrap: UI framework
- Electron Forge: Modern build and packaging tools
- Data Download: The app downloads a SQLite database from
http://unibocalendar.duckdns.org/data.db - Data Processing: Analyzes enrollment data, user activity, and course statistics
- Visualization: Displays interactive charts showing:
- Daily enrollment trends
- Course popularity rankings
- User activity patterns
- Individual enrollment details
The application is configured to build universal binaries that work on both Intel and Apple Silicon Macs. When you run:
npm run makeThe resulting DMG file will work on all Mac architectures. The Electron Forge configuration automatically handles the universal build process.
-
Build fails on Apple Silicon:
- Make sure you're using Node.js version 18 or higher
- Try running
npm run cleanto clean install dependencies - Run
npm run audit-fixto fix security vulnerabilities
-
Data download fails:
- Check your internet connection
- Verify the remote database URL is accessible
-
App won't start:
- Ensure all dependencies are installed:
npm install - Check that you're in the correct directory
- Try
npm run cleanif you have dependency issues
- Ensure all dependencies are installed:
-
Security vulnerabilities:
- Run
npm auditto see current issues - Use
npm run audit-fixto fix non-breaking issues - For breaking changes, review and test before applying
- Run
- The app downloads data on startup, so the first launch might take a moment
- Data is cached locally for faster subsequent launches
- Use
npm startfor development with hot reloading
ISC License
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
If you encounter any issues or have questions, please check the troubleshooting section above or create an issue in the repository.

