Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Israeli Group Coaching

A comprehensive ASP.NET Web Forms website for a group coaching organization, featuring content management, news, contact forms, mailing lists, and an admin panel.

Built in July 2010. This production system served a real coaching business in Israel, delivering a full web presence with multilingual content, lead capture, newsletters, and administrative tools (Hebrew/English). It remained active until decommissioning. It included real-time lead handling, newsletter automation, and a full admin workflow used by staff.

Features

  • 📄 Dynamic Content Management: Create and manage multiple pages with Hebrew/English support
  • 📰 News System: Scrollable news section with date-based organization
  • 📧 Contact Forms: Lead capture with email notifications
  • 📮 Mailing Lists: Subscriber management with newsletter capabilities
  • 🎓 Graduates Showcase: Photo gallery of program graduates
  • 🗂️ Article Management: Full article creation and display system
  • 🔐 Admin Panel: Comprehensive backend for site management
  • 📊 Logging System: Error tracking and system monitoring
  • 🌐 Multilingual: Support for Hebrew and English content
  • ✉️ Email Integration: Automated notifications and newsletters

Core Capabilities

  • Dynamic Content Management: Multi-page support for Hebrew and English content.
  • Automated Notifications: Real-time email alerts for lead capture and contact forms.
  • Newsletter Automation: Integrated mailing list management and mass email broadcast system.
  • Administrative Workflow: Comprehensive backend for site-wide management and content updates.
  • System Monitoring: Integrated logging and error tracking for high availability.

Technical Excellence

  • Clean Data Access: Centralized DAL using LINQ-to-SQL for type-safe database operations.
  • Robust Logging: Multi-channel logging system supporting both Database and File System outputs.
  • Utility Framework: Global utility classes for common operations like SEO, validation, and email.
  • Type Safety: Full use of strong-typed business objects and database models.
  • Resource Management: Efficient handling of site assets, images, and graduate photos.

Developer Experience

  • Visual Studio Integration: Seamless development experience with Visual Studio 2010+ and .NET 3.5.
  • Environment Separation: Configurable connection strings and application settings via Web.config.
  • Modular Architecture: Clear separation of concerns between UI, Business Logic, and Data layers.
  • Standardized UI: Master Page architecture ensures a consistent look and feel across all pages.

Architecture

graph TB
    subgraph "Client Side"
        Browser[Web Browser]
        jQuery[jQuery 1.4.2]
        CSS[Custom CSS Styling]
    end

    subgraph "Presentation Layer"
        Master[Master.master]
        PublicPages[Public Pages]
        AdminPages[Admin Pages]

        PublicPages --> Default[Default.aspx - Home]
        PublicPages --> Article[ArticlePage.aspx]
        PublicPages --> Lead[LeadPage.aspx - Contact]
        PublicPages --> Grads[Graduates.aspx]

        AdminPages --> AdminContent[Contents Management]
        AdminPages --> AdminNews[News Management]
        AdminPages --> AdminLeads[Leads Management]
        AdminPages --> AdminMail[MailList Management]
    end

    subgraph "Business Logic Layer"
        CoachDal[CoachDal.cs - Data Access]
        GlobalFuncs[GlobalFunctions.cs - Utilities]
        Logger[Logger.cs - Error Logging]
        Notifier[Notifier.cs - Email Service]
    end

    subgraph "Data Layer"
        LinqToSQL[LINQ-to-SQL ORM]
        Database[(SQL Server Database)]

        LinqToSQL --> ContentTable[Content Table]
        LinqToSQL --> NewsTable[News Table]
        LinqToSQL --> LeadTable[Lead Table]
        LinqToSQL --> MailListTable[MailList Table]
        LinqToSQL --> ArticleTable[Article Table]
        LinqToSQL --> GraduateTable[Graduate Table]
        LinqToSQL --> LogTable[Log Table]
    end

    Browser --> Master
    Master --> PublicPages
    Master --> AdminPages

    PublicPages --> CoachDal
    AdminPages --> CoachDal
    CoachDal --> GlobalFuncs
    CoachDal --> Logger
    CoachDal --> Notifier

    CoachDal --> LinqToSQL
    LinqToSQL --> Database

    jQuery --> PublicPages
    CSS --> Master
Loading

Architecture Principles

  1. Layered Architecture: Strict separation between Presentation (ASPX), Business Logic (App_Code), and Data (LINQ-to-SQL).
  2. DRY (Don't Repeat Yourself): Common logic is centralized in GlobalFunctions.cs and CoachDal.cs.
  3. Configuration-Driven: Application behavior and environment settings are controlled via Web.config.
  4. Persistence Ignorance: Business logic interacts with a clean data access layer rather than raw SQL queries.
  5. Centralized Logging: All errors and critical events are routed through a unified Logger service.

Design Patterns

  • Data Access Object (DAO): Implemented through the CoachDal class for all database interactions.
  • Singleton-like Utilities: Static utility classes for global functions and system-wide services.
  • Master Page Pattern: Standard ASP.NET pattern for consistent UI layout and navigation.
  • Template Method: Leveraging the ASP.NET Page lifecycle for standardized request handling.

Getting Started

Prerequisites

  • Windows Server or Windows 10/11
  • IIS (Internet Information Services) 7.0+
  • .NET Framework 3.5
  • SQL Server 2008 or higher
  • Visual Studio 2010+ (for development)

Installation

  1. Clone the repository:
git clone https://github.com/orassayag/israeli-group-coaching.git
cd israeli-group-coaching
  1. Configure the database connection in Web.config:
<connectionStrings>
  <add name="pminsig_coachingConnectionString"
       connectionString="Data Source=YOUR_SERVER;Initial Catalog=YOUR_DATABASE;User ID=YOUR_USER;Password=YOUR_PASSWORD;"
       providerName="System.Data.SqlClient" />
</connectionStrings>
  1. Update application settings in Web.config:
<appSettings>
  <add key="ErrorLogPath" value="C:\YourPath\Logs\"/>
  <add key="JscriptFile" value="C:\YourPath\App_Js\JScript.js"/>
</appSettings>
  1. Create the database using the LINQ-to-SQL model as reference (App_Code/CoachingDal.dbml)

  2. Build the solution in Visual Studio

  3. Deploy to IIS and configure the application pool to use .NET Framework 3.5

Usage

Public Website

  • Home: View dynamic content and latest news.
  • Articles: Browse and read educational coaching articles.
  • Contact: Submit leads through the integrated contact form.
  • Graduates: View the photo gallery of program graduates.
  • Mailing List: Subscribe to the newsletter via the sidebar.

Admin Panel

  • Access at /Admin/ to manage all site content.
  • Update news, manage leads, and oversee the mailing list.
  • View system logs and site statistics.

Development

Building the Project

  1. Open israeli-group-coaching.sln in Visual Studio 2010 or higher.
  2. Ensure all references are resolved.
  3. Select Build > Build Solution (Ctrl+Shift+B).

Debugging

  • Press F5 to start debugging with IIS Express.
  • Use the standard VS debugger to step through App_Code logic.

Available Scripts

While this is a legacy .NET Web Forms project, the following operations are commonly used:

  • Build Solution: Compiles the C# code and prepares the website for running.
  • Publish Website: Prepares the site for deployment by gathering all necessary assets.
  • Database Setup: Use the CoachingDal.dbml to generate or update the SQL Server schema.

For detailed setup instructions, see INSTRUCTIONS.md.

Directory Structure

israeli-group-coaching/
├── Admin/                  # Admin panel pages
│   ├── Articles.aspx      # Article management
│   ├── Contents.aspx      # Content management
│   ├── Graduates.aspx     # Graduate management
│   ├── Leads.aspx         # Lead viewing
│   ├── Logs.aspx          # System logs
│   ├── MailLists.aspx     # Mailing list management
│   └── News.aspx          # News management
├── App_Code/              # Business logic
│   ├── CoachDal.cs        # Data access layer
│   ├── CoachingDal.dbml   # LINQ-to-SQL model
│   ├── GlobalFunctions.cs # Utility functions
│   ├── Logger.cs          # Error logging
│   └── Notifier.cs        # Email notifications
├── App_Js/                # JavaScript libraries
│   ├── JScript.js         # Custom scripts
│   ├── jquery-1.4.2.min.js
│   └── jScrollPane.js     # Scroll plugin
├── images/                # Site images and assets
├── Default.aspx           # Home page
├── ArticlePage.aspx       # Article display
├── LeadPage.aspx          # Contact form
├── Graduates.aspx         # Graduates gallery
├── Master.master          # Master page template
├── Web.config             # Configuration
└── style.css              # Stylesheets

Key Components

Data Access Layer

The CoachDal class provides centralized database operations:

  • CRUD operations for all entities
  • LINQ-to-SQL integration
  • Transaction management
  • Data validation

Business Logic

  • GlobalFunctions: Utilities for email, validation, SEO, file operations
  • Logger: Comprehensive error and event logging to database and files
  • Notifier: Email notification system for leads and newsletters

User Interface

  • Master Page: Consistent layout with navigation, news sidebar, and mailing list signup
  • Public Pages: Content display, articles, contact forms, graduate gallery
  • Admin Panel: Full CRUD operations for all content types

Technologies Used

Security Considerations

Important: This is a legacy application from 2010 containing outdated security practices:

⚠️ Before deploying:

Best Practices

  • Security: Always use parameterized queries or LINQ-to-SQL to prevent SQL injection.
  • Logging: Implement Logger.Write() for all critical business logic and error handling.
  • Configuration: Store environment-specific settings (like file paths and credentials) in Web.config.
  • SEO: Utilize the GlobalFunctions.SetSeo() method for consistent meta-tag management.
  • Maintenance: Periodically clear the Logs directory and monitor database size.
  1. Remove all hardcoded credentials from source files
  2. Enable HTTPS/SSL in production
  3. Implement proper authentication for admin panel
  4. Review and sanitize all user inputs
  5. Use parameterized queries throughout
  6. Set customErrors mode="On" in Web.config
  7. Consider migrating to modern .NET framework

See CONTRIBUTING.md for security best practices.

Contributing

Contributions to this project are released to the public under the project's open source license.

Everyone is welcome to contribute. Contributing doesn't just mean submitting pull requests—there are many different ways to get involved, including answering questions and reporting issues.

Please see CONTRIBUTING.md for detailed guidelines.

Author

Design

License

This application has an MIT license - see the LICENSE file for details.

Acknowledgments

  • Built for educational and research purposes
  • Respects robots.txt and implements rate limiting
  • Uses user-agent rotation to avoid detection
  • Implements polite crawling practices

About

A comprehensive ASP.NET Web Forms website for a group coaching organization, featuring content management, news, contact forms, mailing lists, admin panel. Built in July 2010, it served as a production site in Israel, providing dynamic content, client interaction features, and administrative tools, supporting real users until it was decommissioned.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages