Skip to content

gAmUssA/agendadefender

 
 

Repository files navigation

Agenda Defender

A meeting agenda timer application that helps you keep your meetings on track.

Web Application Setup

Python Setup

# Install uv (if not already installed)
pip install uv

# Create and activate virtual environment
uv venv
source .venv/bin/activate  # On Unix/macOS
# or
.venv\Scripts\activate  # On Windows

# Install dependencies
uv pip install -r requirements.txt

Running the Web Application

# Start the server
python server.py

# Open your browser and navigate to:
http://localhost:8080

Desktop Application Setup

Prerequisites

  • Node.js (v16 or later)

  • npm (comes with Node.js)

Development Setup

# Install dependencies
npm install

# Start the application in development mode
npm start

Building the Desktop Application

# Build for all platforms
npm run build

# Build for specific platforms
npm run build -- --mac    # macOS
npm run build -- --win    # Windows
npm run build -- --linux  # Linux

The built applications will be available in the dist directory.

Build Output

Platform Output

macOS

dist/Agenda Defender-{version}.dmg

Windows

dist/Agenda Defender Setup-{version}.exe

Linux

dist/agenda-defender-{version}.AppImage

Development

Web Application

The application uses Flask for the development server. The server will automatically reload when you make changes to the Python files.

Desktop Application

The application is built using Electron, allowing it to run as a native desktop application across different platforms.

CI/CD Pipeline

The project uses GitHub Actions for continuous integration and deployment:

Automated Builds

  • Triggered automatically on:

    • Pushes to the main branch

    • Creating version tags (e.g., v1.0.0)

Build Artifacts

  • Every push to main will:

    • Build the application for all platforms (macOS, Windows, Linux)

    • Upload build artifacts to the GitHub Actions run

    • You can download and test these artifacts from the Actions tab

Creating Releases

  • Creating a version tag (e.g., v1.0.0) will:

    • Build the application for all platforms

    • Create a GitHub release

    • Upload the built binaries to the release

    • Generate release notes

To manually create a release:

# Update version and create tag
npm version patch  # or minor/major
# This will automatically:
# 1. Update package.json version
# 2. Create a git tag
# 3. Push changes and tag to GitHub
# 4. Trigger the release workflow

To create a test build without releasing:

# Just push to main branch
git push origin main

# Check the Actions tab on GitHub for build artifacts

Project Structure

agenda-defender/
├── index.html           # Main application HTML
├── main.js             # Electron main process
├── package.json        # Node.js dependencies and scripts
├── requirements.txt    # Python dependencies
├── server.py          # Development web server
├── scripts/           # JavaScript files
└── styles/           # CSS files

Credits

Created by @dylanbeattie

License

MIT License

Features

  • Simple, clean interface for managing meeting agendas

  • Real-time countdown timer

  • Light and dark theme support with system preference detection

  • Cross-platform support (macOS, Windows, Linux)

  • Native application experience

Installation

Download Pre-built Binaries

Visit the releases page to download the latest version for your platform:

  • macOS: Download Agenda Defender.dmg or Agenda Defender.zip

  • Windows: Download Agenda Defender Setup.exe

  • Linux: Download Agenda Defender.AppImage

Building from Source

Prerequisites

  • Node.js 18 or later

  • npm (comes with Node.js)

  • Git

Development Setup

  1. Clone the repository:

    git clone https://github.com/dylanbeattie/agendadefender.git
    cd agendadefender
  2. Install dependencies:

    npm install
  3. Start the development server:

    npm start

Building the Application

To build the application for your current platform:

npm run build

To clean the build directory:

npm run clean

To perform a clean build:

npm run rebuild

Platform-Specific Build Instructions

macOS

  1. Ensure you have Xcode Command Line Tools installed:

    xcode-select --install
  2. Generate the icon set:

    cd icon
    chmod +x convert-icons.sh
    ./convert-icons.sh
  3. Build the application:

    npm run build

The built application will be in dist/mac.

Windows

  1. Build the application:

    npm run build

The installer will be in dist/win-unpacked.

Linux

  1. Install required dependencies (Ubuntu/Debian):

    sudo apt-get install -y libxss-dev libgconf2-4
  2. Build the application:

    npm run build

The AppImage will be in dist/.

Creating a Release

  1. Update the version number:

    npm version patch  # for bug fixes (1.0.0 -> 1.0.1)
    # or
    npm version minor  # for new features (1.0.0 -> 1.1.0)
    # or
    npm version major  # for breaking changes (1.0.0 -> 2.0.0)
  2. The release process will automatically:

    • Push changes to GitHub

    • Create a new tag

    • Trigger GitHub Actions to:

      • Build the application for all platforms

      • Create a GitHub release

      • Upload the built binaries

Development

Project Structure

.
├── icon/                   # Application icons
├── scripts/               # JavaScript files
├── styles/               # CSS styles
├── .github/              # GitHub Actions workflows
├── index.html           # Main HTML file
├── main.js             # Electron main process
└── package.json        # Project configuration

Theme Support

The application supports three theme modes:

  • Light theme

  • Dark theme

  • System theme (automatically matches system preferences)

Theme can be toggled using the moon/sun icon (🌓) in the top-right corner.

Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

About

A thing for keeping meetings on track.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 86.6%
  • CSS 9.8%
  • HTML 1.6%
  • Makefile 1.3%
  • Other 0.7%