An open API service indexing awesome lists of open source software.

https://github.com/aryaghan-mutum/housing-app

A cross-platform desktop GUI application for housing and dining management. Features secure authentication, furniture inventory tracking, and data export capabilities.
https://github.com/aryaghan-mutum/housing-app

cross-platform desktop-app furniture-inventory gui housing-management inventory-management linux lisp macos racket racket-gui windows

Last synced: 2 months ago
JSON representation

A cross-platform desktop GUI application for housing and dining management. Features secure authentication, furniture inventory tracking, and data export capabilities.

Awesome Lists containing this project

README

          

# Housing & Dining Application

A cross-platform **desktop GUI application** built with Racket for managing housing and dining services in residence halls.

![Racket](https://img.shields.io/badge/Racket-8.0+-blue)
![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-green)
![License](https://img.shields.io/badge/License-MIT-yellow)

## Features

- 🔐 **Secure Authentication** - User login with attempt limiting and lockout protection
- 🏠 **Dashboard Interface** - Modern card-based navigation with quick stats
- 🪑 **Furniture Inventory** - Browse, filter, and search furniture by building/floor/room
- 🔧 **Maintenance Tracker** - Track and manage maintenance requests
- 📊 **Reports & Analytics** - Generate inventory and activity reports
- ⚙️ **Settings Management** - Customize themes, notifications, and preferences
- 📤 **Data Export** - Export inventory data to CSV format
- 🎨 **Themed UI** - Consistent styling with customizable theme

## Project Structure

```
housing-app/
├── main.rkt # Application entry point
├── info.rkt # Package metadata
├── src/
│ ├── core/
│ │ ├── config.rkt # Configuration settings
│ │ └── database.rkt # Database operations
│ ├── ui/
│ │ └── theme.rkt # Colors, fonts, UI helpers
│ ├── views/
│ │ ├── login.rkt # Login form
│ │ ├── dashboard.rkt # Main dashboard
│ │ ├── furniture-browser.rkt # Inventory browser
│ │ └── dialogs/
│ │ ├── about-dialog.rkt # About dialog
│ │ ├── settings-dialog.rkt # Settings dialog
│ │ ├── reports-dialog.rkt # Reports dialog
│ │ └── maintenance-dialog.rkt # Maintenance tracker
│ └── tests/
│ └── test-config.rkt # Unit tests
└── .github/
└── workflows/
├── ci.yml # CI pipeline
├── release.yml # Release workflow
└── auto-version.yml # Auto-versioning
```

## Requirements

- Racket 8.0 or higher
- Required packages:
- `gui-lib` (included with Racket)
- `db` (for database connectivity)

## Installation

1. Install Racket from https://racket-lang.org/

2. Clone the repository:
```bash
git clone https://github.com/aryaghan-mutum/housing-app.git
cd housing-app
```

3. Install required packages:
```bash
raco pkg install db
```

## Running the Application

```bash
racket main.rkt
```

Or from DrRacket, open `main.rkt` and click Run.

### Demo Mode

The application runs in **demo mode** by default, allowing you to explore all features without a database connection.

**Demo Credentials:**
- Username: `test` / Password: `test`
- Username: `admin` / Password: `admin`

To connect to a real database, edit `src/core/config.rkt` and set `demo-mode?` to `#f`.

## Configuration

Edit `src/core/config.rkt` to customize:

```racket
;; Application settings
(define app-name "Housing & Dining")
(define app-version "2.0.0")

;; Database connection (when demo-mode? is #f)
(define db-server "YOURSERVER\\SQLEXPRESS")
(define db-name "HousingDB")
(define db-user "sa")
(define db-password "yourpassword")

;; Security settings
(define max-login-attempts 3)
(define lockout-duration-seconds 7200) ; 2 hours

;; Set to #f to use real database
(define demo-mode? #t)
```

## Development

### Running Tests

```bash
cd tests
racket test-config.rkt
```

### Building Executable

```bash
raco exe -o housing-app main.rkt
```

### Creating Distribution

```bash
raco distribute dist housing-app
```

## Architecture

This is a **native desktop GUI application** using Racket's `racket/gui` framework, which provides:

- Cross-platform support (Windows, macOS, Linux)
- Native look and feel on each platform
- No web browser or server required
- Direct system integration

## Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

**Commit Prefixes for Auto-versioning:**
- `feat:` - New features (minor version bump)
- `fix:` - Bug fixes (patch version bump)
- `major:` or `BREAKING CHANGE` - Breaking changes (major version bump)

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Author

**Anurag Muthyam** - [GitHub](https://github.com/aryaghan-mutum)

## Acknowledgments

- Converted from an original C# Windows Forms application
- Built with [Racket](https://racket-lang.org/)