DevMiniOS is a lightweight, offline-first Integrated Development Environment (IDE) designed for creating and experimenting with Domain-Specific Languages (DSLs). It provides a natural language interface for generating code, managing projects, and integrating with Git.
-
Natural Language to Code Generation: Translate natural language prompts into structured commands and executable code using a rule-based planning system.
-
Offline Operation: Develop and generate code without relying on external network connections or third-party services.
-
Template-Driven Code Generation: Generate code in multiple languages (C#, C++, JavaScript) from predefined templates.
-
Integrated Git Operations: Initialize Git repositories, add changes, commit code, and push/pull from remote repositories directly from the IDE (requires Git command-line tools).
-
Mini-LM for Intelligent Code Completion: A small, local language model provides context-aware code completion suggestions for DSLs, enhancing productivity.
[Include a diagram here showing the system architecture. Example: MVC App <=> C# API <=> Python Mini-LM (Optional C++)]
DevMiniOS follows a modular architecture:
-
MVC Front-End: Provides the user interface for interacting with the IDE.
-
C# Web API: Acts as a bridge between the front-end and the core code generation and Git services. Handles requests and provides responses.
-
Rule-Based Planner: Analyzes natural language input and generates a structured plan of actions.
-
Code Generator: Uses templates and the generated plan to produce source code in the desired language.
-
Git Service: Executes Git commands using the command-line interface.
-
Mini-LM (Python): Provides intelligent code completion suggestions based on a small, local language model.
- Implemented using a bigram language model in Python.
- Trained on a corpus of DSL commands and code snippets.
- Provides code completion suggestions based on the preceding words.
-
Prerequisites:
- .NET 9 SDK
- Python 3.x (for the mini-LM)
- Git (for Git integration)
-
Clone the repository:
git clone <repository_url>
-
Build the application:
dotnet build
-
Run the application:
dotnet run
-
Access the IDE in your browser: Navigate to
https://localhost:<port>/(replace<port>with the port number shown in the console).
-
Enter a natural language prompt in the input field.
-
Select the target programming language.
-
Click the "Generate" button.
-
The IDE will display the generated code and DSL summary.
-
Python Path: Configure the path to the Python executable in
appsettings.jsonusing theMiniModel:PythonPathkey. -
Model Location: The mini-LM model is stored in the
MiniModel/out/model.jsonfile.
We welcome contributions to DevMiniOS! Whether you're a seasoned developer, a documentation enthusiast, or just starting out, there are many ways you can help.
-
Fork the repository: Click the "Fork" button in the upper-right corner of the GitHub repository to create your own copy.
-
Clone your fork: Clone your forked repository to your local machine:
git clone https://github.com/your-username/DevMiniOS.git
-
Create a branch: Create a new branch for your changes:
git checkout -b feature/your-feature-name
- Use descriptive branch names, such as
feature/add-new-dsl-commandorfix/typo-in-readme.
- Use descriptive branch names, such as
-
Make your changes: Implement your desired changes, following the coding standards outlined below.
-
Commit your changes: Commit your changes with a clear and concise commit message:
git commit -m "Add new DSL command for database interaction" -
Push your changes to your fork:
git push origin feature/your-feature-name
-
Submit a pull request: Go to your forked repository on GitHub and click the "Create pull request" button.
- Code Contributions:
- Implement new features or DSL commands.
- Fix bugs.
- Improve performance.
- Add tests.
- Documentation Contributions:
- Improve the README file.
- Add or update API documentation.
- Create tutorials or examples.
- Bug Reports: Report any bugs or issues you encounter by creating a new issue in the GitHub issue tracker.
- Feature Requests: Suggest new features or improvements by creating a new issue in the GitHub issue tracker.
- Follow the existing coding style and naming conventions.
- Add XML documentation comments to all new classes, methods, and properties in C#.
- Add docstrings to all new functions and classes in Python.
- Write unit tests for all new code.
- Keep code changes small and focused.
- Ensure that your changes don't introduce any new warnings or errors.
Use the GitHub issue tracker to report bugs, suggest new features, or ask questions.
We are committed to creating a welcoming and inclusive community. Please review our Code of Conduct before contributing.
Thank you for your contributions!
MIT License