- Project Overview
- How to Contribute
- Features
- Getting Started
- Contributing Guidelines
- Learning Resources
- Support & Contact
- About Us
DataGenerator is an open-source C++ Data Generator built specifically for students in the DEVLEV community. This educational project provides hands-on experience in contributing to real open-source codebases, serving as a friendly stepping stone into collaborative software development.
The project's primary goal is to keep growing and evolving through student contributions. We actively encourage adding new features, datasets, and creative enhancements β making this a living, breathing project that reflects the community's creativity and learning journey.
Currently, DataGenerator offers two distinct interfaces to accommodate students at different skill levels:
- Console Interface: Perfect for beginners and students in lower years who want to focus on core C++ concepts
- GUI Interface: Built with ImGui and DirectX 11, ideal for advanced students interested in graphical user interfaces
While the current GUI implementation uses C++ with ImGui and DirectX (which can be complex for some contributors), we're planning to support more modern GUI stacks in the future. This makes the project worth following as it continues to evolve and become more accessible to contributors with different backgrounds.
Ready to make your first contribution? Here's how to get started:
π First, check out our comprehensive contribution guide: How to start
π Quick Setup Tip: After cloning the repository, make sure to set the correct project (DataGeneratorConsole or DataGeneratorGUI) as your Startup Project in Visual Studio before building and running.
We strongly encourage students to:
- Add as many features and datasets as you want β creativity is welcomed!
- Think outside the box β fun additions, easter eggs, and even memes are part of the educational experience
- Start small β even adding a single name to the data arrays is a valuable contribution
- Experiment freely β this is your playground for learning open-source development
Perfect starting points for new contributors:
- Add more fields to the generator
- Implement new menu options in the console interface
- Add input validation improvements
- Create new simple generation functions
- Get creative! Add your favorite movie characters, book names, or local data from your region
More challenging contributions:
- Enhance the GUI with new windows and features
- Add data visualization capabilities (charts, graphs, statistics)
- Implement advanced export options (JSON, XML, databases)
- Add configuration settings and user preferences
- Improve the user experience with better UI elements
- Think big! Add themes, animations, or interactive data exploration features
This project is specifically designed for first-time contributors! Here's how to get involved:
π We Welcome ALL Kinds of Creative Contributions! Whether you want to add serious functionality, fun features, creative datasets, or even educational memes and easter eggs β your contribution helps make this project a better learning experience for everyone.
- Language: C++17 standard
- Naming Convention: camelCase for functions and variables
- File Naming: PascalCase for headers, camelCase for source files
- Documentation: Doxygen-style comments for all public functions
- Formatting: All code must be formatted using visual studio (or something that achives the same result)
- Separation: Clear separation between UI logic and data generation
- Follow these conventions when naming your Git branches:
- Use
feat/followed by a short, descriptive name for the feature you're adding(eg. feat/add_type). - Use
fix/followed by a short description of the bug you're fixing (eg. fix/fix_typo).
- Use
We hope to see your bug fixes and improvments to out code!
The project follows a modular C++ architecture with clear separation of concerns:
DataGenerator/
βββ DataGenerator/ # Core library (generation logic, static lib)
βββ DataGeneratorConsole/ # Console application
βββ DataGeneratorGUI/ # GUI application using Dear ImGui
β βββ imgui/ # ImGui library files
-
DataGenerator Library (
DataGenerator/)- Compiled as a static library used by both interfaces
-
Console Interface (
DataGeneratorConsole/)- Simple menu-driven interface
- Perfect for beginners to understand basic C++ concepts
-
GUI Interface (
DataGeneratorGUI/)- Modern graphical interface using ImGui library
- DirectX 11 rendering backend
DataGenerator provides two distinct user interfaces, each designed for different learning levels and contribution opportunities:
- Simple Menu-Driven Experience: Perfect for beginners to understand C++ basics
- Easy Data Generation: Generate various types of personal data through text-based menus
- Bulk Operations: Create multiple records at once with customizable quantities
- File Export: Save generated data to CSV format for external use
- Beginner-Friendly: Ideal starting point for first-time contributors
- Modern Graphical Interface: Built with ImGui library and DirectX 11 rendering
- Interactive Experience: Point-and-click interface for more advanced users
- Visual Data Display: Enhanced presentation of generated information
- Advanced Features: Extended functionality for complex data manipulation
- Extensible Design: Perfect platform for students to add creative UI enhancements
Both interfaces share the same powerful core generation engine, allowing students to contribute new data types, generation algorithms, and creative features that benefit the entire community. We encourage contributors to add their own datasets, implement fun features, and even include easter eggs β making this project a reflection of our community's creativity and learning spirit!
- Visual Studio 2019/2022 with C++ development tools
- Windows 10/11 (required for DirectX 11 GUI support)
- Git for version control
-
Clone the repository:
git clone https://github.com/DevLev-OpenSource/DataGenerator.git cd DataGenerator -
Open in Visual Studio:
- Open
DataGenerator.slnin Visual Studio - The solution contains 3 projects that will build automatically
- Open
-
Build the solution:
- Press
Ctrl+Shift+Bor use Build β Build Solution - This will create both Console and GUI executables
- Press
This project helps students learn:
- C++ Programming: Modern C++17 features and best practices
- Project Structure: How to organize larger codebases
- Version Control: Git workflow and collaboration
- Documentation: Writing clear, maintainable code
- UI Development: Both console and graphical interfaces
- Open Source: Contributing to collaborative projects
- Issues: Use GitHub Issues for bug reports and feature requests
- Discussions: Use GitHub Discussions for questions and ideas
- DEVLEV Community: Connect with other students and mentors
DEVLEV is a vibrant community of students, developers, and mentors passionate about learning, contributing, and growing together in the world of software development. Our mission is to make open-source contribution accessible and enjoyable for students at all levels.
We believe that the best way to learn programming is through hands-on experience with real projects, collaborative development, and supportive mentorship. The DataGenerator project embodies these values by providing a safe, encouraging environment for students to make their first (or hundredth!) open-source contributions.
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Made with β€οΈ by the DEVLEV Community
This project is designed to be a stepping stone for students entering the world of open source development. Every contribution, no matter how small, is valuable and appreciated!