Page 1 of 6
nova-i-GeanyRust System Requirements Document
1. Introduction
The nova-i-GeanyRust project aims to rebuild the Geany Integrated Development Environment (IDE) specifically for the Rust programming language. This project, named RustGeany, will clone the existing Geany IDE from its GitHub repository and adapt it to support Rust, providing developers with a lightweight and efficient tool tailored to their needs.
2. System Overview
The nova-i-GeanyRust project will leverage the existing structure and features of the Geany IDE, adapting them to support Rust programming. The project will focus on maintaining the lightweight and extensible nature of Geany while enhancing its capabilities to cater to Rust developers.
Page 2 of 6
2a. Source Content Inventory
- Source: Geany GitHub Repository
- Authority: Authoritative
- Structure Reference:
- Navigation Menu: Sign in, Fork, Star, Code, Issues, Pull requests, Discussions, Actions, Projects, Wiki, Security and quality, Insights
- Branch and Tag Controls: Branches, Tags
- File Browser: Includes directories like .github, ctags, data, doc, icons, m4, plugins, po, scintilla, scripts, src, tests, and files like .editorconfig, .gitignore, AUTHORS, COMMITTERS, COPYING, ChangeLog, ChangeLog.pre-1-22, HACKING, INSTALL, Makefile.am, NEWS, README, README.I18N, README.Packagers, README.rst, THANKS, TODO, autogen.sh, configure.ac, geany.desktop.in, geany.exe.manifest, geany.gladep, geany.nsi.in, geany.pc.in, geany_private.rc, meson.build, meson_options.txt
- About Section: Describes Geany as a small, lightweight IDE using GTK+
- Features Section: Syntax highlighting, code completion, auto completion of constructs (if, for, while), auto completion of XML/HTML tags, call tips, folding, symbol lists, embedded terminal emulation, extensibility through plugins, support for many filetypes (C, Java, PHP, HTML, Python, Perl, Pascal)
- Installation Details: Distribution packages for Linux, BSD, etc., prebuilt binaries for Mac OS and Windows, build from source requirements (GTK3, Pango, Glib, ATK, C compiler, C++ compiler, rst2html), build methods (Meson, Autotools, Release tarball)
- Usage and License: Run geany or geany --help, GNU GPL v2 or later; Scintilla separate license
- Contribution Guidance: Refer to geany.org and HACKING, submit pull requests via GitHub
Page 3 of 6
3. Functional Requirements as Story Points
- As a Rust developer, I want to use an IDE that supports syntax highlighting for Rust, so that I can easily read and write Rust code.
- As a Rust developer, I want code completion features for Rust constructs, so that I can code more efficiently.
- As a Rust developer, I want auto-completion for Rust-specific tags and constructs, so that I can reduce typing errors.
- As a Rust developer, I want call tips for Rust functions, so that I can understand function usage without leaving the IDE.
- As a Rust developer, I want to use an embedded terminal within the IDE, so that I can compile and run Rust programs without switching contexts.
- As a Rust developer, I want the IDE to be extensible through plugins, so that I can customize it to my workflow.
- As a Rust developer, I want to be able to fork and star the RustGeany repository, so that I can contribute and track its development.
4. User Personas
- Rust Developer: A programmer proficient in Rust who requires an efficient and lightweight IDE to develop Rust applications.
- Contributor: A developer interested in contributing to the RustGeany project by forking the repository and submitting pull requests.
5. Core User Flows
- Rust Developer: Opens RustGeany -> Writes Rust code -> Uses syntax highlighting and code completion -> Compiles code using embedded terminal -> Debugs and tests code -> Saves and commits changes.
- Contributor: Forks RustGeany repository -> Clones repository locally -> Makes code changes -> Submits pull request on GitHub -> Reviews and merges changes.
Page 4 of 6
6. Visuals Colors and Theme
- primary: #0D47A1 (Deep Blue)
- primary_light: #5472D3 (Light Blue)
- secondary: #FF6F00 (Amber)
- accent: #D32F2F (Red)
- highlight: #FFC107 (Yellow)
- bg: #FFFFFF (White)
- surface: #F5F5F5 (Light Grey)
- text: #212121 (Dark Grey)
- text_muted: #757575 (Grey)
- border: #BDBDBD (Light Grey)
7. Signature Design Concept
Interactive Rust Code Playground
The homepage of RustGeany will feature an interactive Rust code playground. Users can type Rust code directly into a live editor on the landing page. As they type, the code will be highlighted and auto-completed in real-time. The playground will include a "Run" button that executes the code and displays the output below the editor. This interactive feature will be built using motion/react for smooth transitions and animations, providing an engaging and educational experience for users.
Page 5 of 6
LANDING HERO MOTION BRIEF
The landing hero will depict a Rust code snippet being typed out in real-time, with syntax highlighting and auto-completion effects. The code will transform a simple input (e.g., a string) into a complex Rust data structure, showcasing the power of Rust programming. The animation will loop every 10 seconds, with a clear start and end, allowing users to interact by modifying the code and seeing immediate results. The reduced-motion state will display a static code snippet with a "Run" button.
8. Interaction Model & Motion Direction
- Intended Interaction Model: Animated
- The landing page will feature moderate scroll-triggered reveals and hover transitions, enhancing the interactive Rust code playground experience.
- Internal Pages: Static
- Focus on layout clarity and minimal motion for code editing and project management.
9. Non-Functional Requirements
- The IDE must be lightweight and fast, maintaining the efficiency of the original Geany IDE.
- The IDE must be compatible with major operating systems, including Linux, Mac OS, and Windows.
- The IDE must support extensibility through plugins to allow customization.
Page 6 of 6
10. Tech Stack
- Frontend: React for Web
- Backend: Python
- Build Tools: Meson, Autotools
- Dependencies: GTK3, Pango, Glib, ATK, C compiler, C++ compiler, rst2html
11. Assumptions and Constraints
- The project assumes that users are familiar with Rust programming and basic IDE functionalities.
- The project is constrained by the existing architecture and features of the Geany IDE, which will be adapted for Rust.
12. Glossary
- IDE: Integrated Development Environment
- Rust: A programming language focused on safety and performance
- Syntax Highlighting: A feature that displays source code in different colors and fonts according to the category of terms
- Code Completion: A feature that predicts the rest of a word a user is typing
- Embedded Terminal: A terminal emulator integrated within the IDE
- Plugin: A software component that adds a specific feature to an existing computer program
No comments yet. Be the first!