Skip to content

FEMZYKENTLTD/Contact_Book_Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“’ Contact Book Pro

A modern, beautiful, cross-platform desktop contact management application built with Go (Golang) and Wails, featuring an intuitive GUI, smart ID system, and a Recycle Bin for safe deletion.

Made with Go Wails Platform License Status

πŸ“Έ Screenshots

Check the screenshot folder folder for some of the pictures of the interface

🎯 About The Project

Contact Book Pro is a production-ready desktop application that demonstrates modern full-stack development practices using Go for the backend and modern web technologies for the frontend, packaged into a native desktop application via Wails.

Built as part of the SIWES (Students Industrial Work Experience Scheme) program, this project showcases enterprise-grade architecture patterns including:

  • πŸ” Permanent Database IDs (like JIRA: CB-0001)
  • πŸ”„ Sequential Display Indices (auto-renumbering)
  • πŸ—‘οΈ Soft Delete with Recycle Bin (like Gmail)
  • ♻️ Recovery System (restore deleted contacts)
  • πŸ”’ Duplicate Prevention (unique phone & email)
  • 🎨 Modern UI (sidebar navigation, toast notifications)

✨ Features

Core CRUD Operations

  • βœ… Create β€” Add contacts with full validation
  • βœ… Read β€” View all contacts in a beautiful table
  • βœ… Update β€” Edit any contact field
  • βœ… Delete β€” Soft delete to Recycle Bin

Advanced Features

  • πŸ” Smart Search β€” Search by name, phone, email, address, or CB-ID
  • πŸ—‘οΈ Recycle Bin β€” Recover or permanently delete
  • πŸ”₯ Empty Bin β€” Bulk permanent deletion
  • πŸ†” Cramable IDs β€” Easy-to-remember format (CB-0001)
  • πŸ“ Display Index β€” Sequential numbering (#1, #2, #3)
  • πŸ”” Toast Notifications β€” Beautiful success/error feedback
  • πŸ“… Timestamps β€” Track when contacts are added/deleted
  • πŸ”„ Auto-Migration β€” Backward compatible with old data

Validation & Safety

  • βœ“ Letter-only validation for names
  • βœ“ Phone number format check (7-15 digits)
  • βœ“ Email format validation
  • βœ“ Required field checks
  • βœ“ Duplicate phone/email prevention
  • βœ“ Confirmation dialogs for destructive actions

UI/UX Excellence

  • 🎨 Modern dark sidebar with gradient
  • 🌈 Color-coded action buttons
  • πŸ’« Smooth transitions and hover effects
  • πŸ“± Responsive layout
  • πŸ”” Toast notifications
  • πŸ‘€ Auto-generated user avatars

πŸ› οΈ Tech Stack

Backend

  • Go (Golang) v1.22+ β€” Core language
  • Wails v2 v2.12.0 β€” Desktop framework
  • JSON β€” Data persistence

Frontend

  • HTML5 β€” Structure
  • CSS3 β€” Custom styling with gradients
  • Vanilla JavaScript β€” Frontend logic
  • Vite β€” Build tool

Architecture Patterns

  • Repository Pattern β€” Storage layer abstraction
  • Soft Delete β€” Industry-standard data preservation
  • Auto-Migration β€” Backward compatibility
  • Persistent ID Counter β€” Guaranteed unique IDs

πŸ“ Project Structure

ContactBookGUI/ β”‚ β”œβ”€β”€ πŸ“„ main.go # Wails entry point β”œβ”€β”€ πŸ“„ app.go # Core business logic & API β”œβ”€β”€ πŸ“„ go.mod # Go dependencies β”œβ”€β”€ πŸ“„ go.sum # Dependency checksums β”œβ”€β”€ πŸ“„ wails.json # Wails configuration β”œβ”€β”€ πŸ“„ README.md # This file β”œβ”€β”€ πŸ“„ LICENSE # MIT License β”œβ”€β”€ πŸ“„ .gitignore # Git ignore rules β”‚ β”œβ”€β”€ πŸ“ models/ β”‚ └── contact.go # Contact data structure β”‚ β”œβ”€β”€ πŸ“ storage/ β”‚ └── file_storage.go # JSON storage + ID generation β”‚ β”œβ”€β”€ πŸ“ validator/ β”‚ └── validator.go # Input validation β”‚ β”œβ”€β”€ πŸ“ frontend/ β”‚ β”œβ”€β”€ index.html # Main HTML β”‚ β”œβ”€β”€ package.json # NPM dependencies β”‚ └── src/ β”‚ β”œβ”€β”€ main.js # Frontend logic β”‚ β”œβ”€β”€ style.css # Styling β”‚ └── assets/ # Static assets β”‚ β”œβ”€β”€ πŸ“ data/ # Auto-generated β”‚ β”œβ”€β”€ contacts.json # Contact database β”‚ └── .id_counter # Persistent ID counter β”‚ β”œβ”€β”€ πŸ“ build/ # Build output └── πŸ“ screenshots/ # README images

πŸš€ Getting Started

Prerequisites

  • Go 1.22+ β€” Download

  • Node.js 16+ β€” Download

  • Wails CLI:

    go install github.com/wailsapp/wails/v2/cmd/wails@latest

Verify Installation

go version # go1.22+ node --version # v16+ wails version # v2.12+

πŸ’» Installation & Setup

1. Clone the Repository

git clone https://github.com/YOUR-USERNAME/ContactBookGUI.git cd ContactBookGUI

2. Install Dependencies

Go dependencies

go mod tidy

Frontend dependencies

cd frontend npm install cd ..

3. Run Development Mode

wails dev

A desktop window will open! πŸŽ‰

πŸ—οΈ Building for Production

Create a standalone executable:

wails build

Output:

build/bin/ContactBookGUI.exe # Windows build/bin/ContactBookGUI.app # macOS
build/bin/ContactBookGUI # Linux

The single executable file can be distributed without installation!

πŸ“– Usage Guide

Adding a Contact

  1. Click βž• Add Contact in the sidebar
  2. Fill in all fields (validated in real-time)
  3. Click πŸ’Ύ Save Contact

Managing Contacts

  • πŸ‘ View β€” See full contact details
  • ✏️ Edit β€” Update any field
  • πŸ—‘ Delete β€” Move to Recycle Bin

Recycle Bin

  • Click πŸ—‘οΈ Recycle Bin in sidebar
  • ♻️ Recover β€” Restore contact (keeps original CB-ID)
  • πŸ’₯ Forever β€” Permanently delete
  • πŸ”₯ Empty Bin β€” Delete all at once

Search

  • Click πŸ” Search
  • Type any keyword (name, phone, email, address, or CB-ID)
  • Real-time results with full action buttons

πŸ†” ID System Explained

Two-Tier ID System

| Type | Example | Behavior | |||-| | Database ID | CB-0001 | πŸ”’ Permanent, never changes | | Display Index | #1, #2, #3 | πŸ”„ Sequential, updates dynamically |

Why Two IDs?

Add contacts: CB-0001 (#1), CB-0002 (#2), CB-0003 (#3) Delete CB-0002: CB-0001 (#1), CB-0003 (#2) ← Display renumbers Add new: CB-0001 (#1), CB-0003 (#2), CB-0004 (#3) Recover CB-0002: CB-0001 (#1), CB-0003 (#2), CB-0004 (#3), CB-0002 (#4)

Database IDs are NEVER reused, ensuring data integrity forever (like GitHub Issues).

πŸ§ͺ Validation Rules

Field Rules
First/Last Name Letters only, required
Phone 7-15 digits (allows +, -, spaces)
Email Valid email format
Address Cannot be empty
Duplicate Check Phone & Email must be unique

🎨 Design System

Color Palette

  • Primary: #1a1a2e β†’ #16213e (Sidebar gradient)
  • Accent: #0f3460 (Active states)
  • Success: #dcfce7 / #166534
  • Warning: #fef3c7 / #92400e
  • Danger: #fee2e2 / #dc2626

πŸ—ΊοΈ Roadmap

  • Export to CSV/Excel
  • Import from CSV/vCard
  • Profile pictures
  • Contact groups/tags
  • Dark/Light theme toggle
  • Cloud sync
  • Mobile companion app
  • Multi-language support
  • Keyboard shortcuts
  • Backup & restore

🀝 Contributing

Contributions welcome! Please follow these steps:

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License β€” see LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Olufemi Keripe (a.k.a FEMZYK)

  • πŸŽ“ SIWES Student at LASU
  • πŸ’Ό Aspiring Full-Stack Developer
  • 🌍 Lagos, Nigeria πŸ‡³πŸ‡¬
  • πŸ“§ femzykenterprises@gmail.com
  • πŸ”— [LinkedIn](Working on retrieval)
  • πŸ™ GitHub

πŸ™ Acknowledgments

  • Wails Project β€” Amazing Go desktop framework
  • Go Team β€” Powerful, elegant language
  • SIWES Program β€” Practical learning opportunity
  • My SIWES Team β€” Collaboration and support

⭐ Show Your Support

If you found this project helpful, please give it a ⭐ on GitHub!

Built with ❀️ in Lagos, Nigeria using Go + Wails

Report Bug Β· Request Feature Β· Documentation

About

πŸ“’ Modern desktop contact manager built with Go + Wails. Features cramable IDs (CB-0001), Recycle Bin with recovery, smart search, and beautiful GUI. Cross-platform: Windows, macOS, Linux.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors