{"id":33325059,"url":"https://github.com/arsapoz/phpsunshine","last_synced_at":"2025-11-24T11:01:15.681Z","repository":{"id":324978344,"uuid":"1099199231","full_name":"arsapoz/PHPsunshine","owner":"arsapoz","description":"☀️ PHP Sunshine IDE - Built by Serbian \u0026 Romanian devs who refuse to pay €200/year for PhpStorm. Material Design themes, Vim-style editing, built in Rust. PrestaShop, Laravel \u0026 Symfony support. 🦀🇷🇸🇷🇴","archived":false,"fork":false,"pushed_at":"2025-11-18T21:58:54.000Z","size":48,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-18T23:18:44.645Z","etag":null,"topics":["balkan","ide","laravel","material-design","open-source","php","prestashop","rust","symphony","terminal","vim"],"latest_commit_sha":null,"homepage":"https://nikola-arsic.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arsapoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T17:37:54.000Z","updated_at":"2025-11-18T22:10:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/arsapoz/PHPsunshine","commit_stats":null,"previous_names":["arsapoz/phpsunshine"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/arsapoz/PHPsunshine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsapoz%2FPHPsunshine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsapoz%2FPHPsunshine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsapoz%2FPHPsunshine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsapoz%2FPHPsunshine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arsapoz","download_url":"https://codeload.github.com/arsapoz/PHPsunshine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsapoz%2FPHPsunshine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285389437,"owners_count":27163377,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["balkan","ide","laravel","material-design","open-source","php","prestashop","rust","symphony","terminal","vim"],"created_at":"2025-11-20T07:00:17.791Z","updated_at":"2025-11-21T08:00:39.214Z","avatar_url":"https://github.com/arsapoz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ☀️ PHP Sunshine IDE\n\n\u003e *\"Born from the tears of Serbian and Romanian devs debugging PrestaShop at 3 AM, \n\u003e fueled by rakija and țuică, built because JetBrains wants €200/year \n\u003e and we'd rather buy our babushkas new slippers.\"*\n\n**A modern, blazing-fast PHP IDE built with Rust** 🦀🇷🇸🇷🇴\n\n## 🍺 The Real Story\n\nTwo Balkan developers, one shared hatred of PHP bugs, and a refusal to pay for PhpStorm. \n\nWe're **REAL SLAVS** who:\n- Debug PrestaShop modules that would make Rasputin weep\n- Handle Laravel projects with more nested callbacks than a matryoshka doll\n- Fight Symfony's DependencyInjection like it's the Ottoman Empire\n- **REFUSE TO PAY** €200/year when we can build it ourselves in Rust 💪\n\n**SERBIA 🇷🇸 AND ROMANIA 🇷🇴 POWER** brought this to life!\n\n### Why We Built This\n\n❌ PhpStorm subscription: **€200/year**  \n✅ PHP Sunshine: **FREE FOREVER** (like your babushka's advice)\n\nCustomer projects are killing us. Legacy code is haunting our dreams. \nPrestaShop 1.6 modules are making us question our career choices.\n\nSo we did what any sensible Eastern European developer would do:\n**WE BUILT OUR OWN IDE IN RUST WHILE DRINKING COFFEE STRONG ENOUGH TO STRIP PAINT.**\n\n### The Balkan Way 🔥\n\n- ☕ **Powered by Turkish coffee** (3 cups minimum)\n- 🥃 **Debugged with rakija \u0026 țuică**  \n- 🧅 **Fueled by burek \u0026 mămăligă**\n- 💪 **Built with pure Slavic spite**\n- 🚫 **No JetBrains subscription needed**\n\n![Made with Rust](https://img.shields.io/badge/Made%20with-Rust-orange?logo=rust)\n![Material Design](https://img.shields.io/badge/Theme-Material%20Design-blue)\n![License](https://img.shields.io/badge/license-MIT-green)\n![Balkan Power](https://img.shields.io/badge/Balkan-Power-red)\n![No PhpStorm](https://img.shields.io/badge/PhpStorm-Not%20Needed-green)\n\n## ✨ Features\n\n### 🎨 Material Design Themes\n- [x] **5 Beautiful Themes** - Ocean, Palenight, Darker, Lighter, Deep Ocean\n- [x] **True Color Support** - 24-bit RGB colors\n- [x] **Live Theme Switching** - `:theme \u003cname\u003e` command\n- [x] **Optimized Syntax Colors** - Each theme carefully tuned for PHP\n\n### 📁 Smart File Browser\n- [x] **Tree View** with expand/collapse\n- [x] **Material Icons** - 50+ file type icons\n- [x] **Gitignore Support** - Respects your .gitignore\n- [x] **Framework Detection** - Auto-detects PrestaShop/Laravel/Symfony\n- [x] **Special Folder Icons** - Recognizes src, vendor, tests, etc.\n\n### 📝 Professional Text Editor\n- [x] **Multi-file Tabs** - Work on multiple files\n- [x] **Vim-style Modal Editing** - Normal, Insert, Command modes\n- [x] **Line Numbers** - Always visible\n- [x] **Cursor Position** - Line:Column in status bar\n- [x] **Smart Scrolling** - Keeps cursor in view\n- [x] **Rope-based Buffer** - Efficient for large files\n- [x] **File Persistence** - Save/load functionality\n\n### 🎯 Framework Support\n- [x] **PrestaShop Detection** - Recognizes modules, hooks\n- [x] **Laravel Detection** - Finds Artisan, Blade templates\n- [x] **Symfony Detection** - Identifies console, services\n- [x] **Framework Icons** - Shows appropriate icon in header\n\n### 🛠️ Developer Tools\n- [x] **Git Integration** - Repository detection, branch display\n- [x] **Modal Editing** - Vim-style efficiency\n- [x] **Keyboard Shortcuts** - Full productivity suite\n- [x] **Command Mode** - Execute commands with `:`\n\n### Framework Support\n\n#### PrestaShop\n- [ ] Module structure recognition\n- [ ] Hook completion and navigation\n- [ ] Smarty template support\n- [ ] Database schema analysis\n- [ ] Translation file management\n\n#### Laravel\n- [ ] Artisan command integration\n- [ ] Blade template support\n- [ ] Route navigation\n- [ ] Eloquent model detection\n- [ ] Migration helpers\n\n#### Symfony\n- [ ] Service container awareness\n- [ ] Twig template support\n- [ ] Routing system integration\n- [ ] Console command detection\n- [ ] Doctrine integration\n\n### Developer Tools\n- [ ] Integrated terminal\n- [ ] Git integration\n- [ ] Composer package management\n- [ ] PHPStan/Psalm integration\n- [ ] Xdebug support\n- [ ] Database tools\n\n## 🚀 Quick Start\n\n### Prerequisites\n- ✅ Rust 1.70+ (installed!)\n- 💡 Nerd Font (recommended for icons)\n- 🖥️ Modern terminal with true color support\n\n### Build \u0026 Run\n\n```bash\ncd php-sunshine\n\n# Build release version (optimized)\ncargo build --release\n\n# Run it!\n./target/release/php-sunshine\n\n# Or use the quick start script\n./start.sh\n```\n\n### First Time Usage\n\n1. **Launch**: `./target/release/php-sunshine`\n2. **Open File Browser**: Press `Ctrl+E`\n3. **Navigate**: Use `j`/`k` or arrow keys\n4. **Open File**: Press `Enter`\n5. **Start Editing**: Press `i` for insert mode\n6. **Save**: Press `Esc`, then `Ctrl+S`\n7. **Change Theme**: Type `:theme palenight`\n8. **Quit**: Type `:q`\n\n## ⌨️ Key Bindings\n\n### Essential Commands\n- `i` - Enter insert mode\n- `Esc` - Back to normal mode\n- `Ctrl+S` - Save file\n- `Ctrl+E` - Toggle file browser\n- `Ctrl+T` - New tab\n- `:w` - Save\n- `:q` - Quit\n- `:wq` - Save and quit\n- `:theme \u003cname\u003e` - Change theme\n\n### Navigation\n- `h` `j` `k` `l` - Vim-style movement (or arrow keys)\n- `Ctrl+Tab` - Next tab\n- `Shift+Tab` - Previous tab\n\n**See [KEYBINDINGS.md](KEYBINDINGS.md) for complete reference.**\n\n## 🛠️ Development\n\n### Project Structure\n\n```\nphp-sunshine/\n├── src/\n│   ├── main.rs           # Entry point\n│   ├── editor/           # Text editing core\n│   ├── ui/              # Terminal UI components\n│   ├── parser/          # PHP \u0026 template parsers\n│   ├── lsp/             # Language Server Protocol\n│   └── project/         # Project management \u0026 framework detection\n├── Cargo.toml\n└── README.md\n```\n\n### Building from Source\n\n```bash\ncargo build\ncargo test\ncargo run\n```\n\n## 📸 Screenshots\n\n### Material Ocean Theme (Default)\nDark blue theme with PHP file open, file browser visible\n\n### Material Palenight Theme\nPurple-tinted theme showing Laravel project\n\n### Material Lighter Theme\nLight theme for bright environments\n\n## 📚 Documentation\n\n- **[MANIFESTO.md](MANIFESTO.md)** - 🔥 **READ THIS FIRST!** The Balkan Developer's Creed\n- **[FEATURES.md](FEATURES.md)** - Complete feature list with details\n- **[KEYBINDINGS.md](KEYBINDINGS.md)** - All keyboard shortcuts\n- **[QUICKSTART.md](QUICKSTART.md)** - Quick reference guide (print it!)\n- **[CONTRIBUTING.md](CONTRIBUTING.md)** - Development guide\n- **[BUILD_COMPLETE.md](BUILD_COMPLETE.md)** - What we've built\n\n## 🎨 Themes\n\nAll 5 Material Design themes available:\n\n| Theme | Description | Command |\n|-------|-------------|----------|\n| 🌊 Ocean | Dark blue (default) | `:theme ocean` |\n| 🌙 Palenight | Purple-tinted dark | `:theme palenight` |\n| 🖤 Darker | Maximum contrast | `:theme darker` |\n| ☀️ Lighter | Clean light theme | `:theme lighter` |\n| 🌑 Deep Ocean | OLED-optimized | `:theme deepocean` |\n\n## 📝 Roadmap\n\n### ✅ Phase 1 - Complete!\n- [x] Terminal UI with Ratatui\n- [x] Material Design themes (5 themes)\n- [x] File browser with icons\n- [x] Text editor with tabs\n- [x] Framework detection\n- [x] Git integration\n- [x] Modal editing (Vim-style)\n\n### 🔄 Phase 2 - In Progress\n- [ ] PHP syntax highlighting with Tree-sitter\n- [ ] Code folding\n- [ ] Smart indentation\n- [ ] Search in file\n\n### 📅 Phase 3 - Planned\n- [ ] Fuzzy file search (Ctrl+P)\n- [ ] Multi-file search \u0026 replace\n- [ ] Symbol navigation\n- [ ] Breadcrumbs\n\n### 🚀 Phase 4 - Future\n- [ ] LSP integration\n- [ ] Code completion\n- [ ] Go to definition\n- [ ] Refactoring tools\n- [ ] Integrated debugger\n- [ ] Composer integration\n\n## 🤝 Contributing\n\nContributions welcome! This is an ambitious project to create a modern alternative to PhpStorm.\n\n## 📄 License\n\nMIT\n\n## 🎯 Why PHP Sunshine?\n\n### For PrestaShop Developers\n- Instant module structure recognition\n- Hook system awareness (because we've seen ALL the hooks)\n- Smarty template support (we know your pain)\n- Fast module development workflow\n- **Bonus**: Won't judge you for still maintaining PS 1.6 projects\n\n### For Laravel Developers\n- Artisan command detection\n- Blade template syntax\n- Route file navigation\n- Eloquent model support\n- **No shame**: We've all written `dd()` everywhere\n\n### For Symfony Developers\n- Console command integration\n- Twig template support\n- Service container awareness\n- Bundle structure recognition\n- **Real talk**: We know you Googled \"Symfony DependencyInjection\" 47 times today\n\n## 👨‍💻 The Team\n\n**Made with ❤️, Rust, and Balkan determination by developers who:**\n- Know what \"works on production\" really means\n- Have debugged code while the client was on the phone\n- Can write PHP, JavaScript, and curse words in 5 languages\n- Believe \"git push --force\" is sometimes the answer\n- Think \"it's a feature, not a bug\" is a valid response\n\n### Dedicated To\n\n👵 **Our babushkas** - who don't understand what we do but are proud anyway  \n🚀 **Open source** - because knowledge should be free (like rakija at weddings)  \n💼 **Freelancers everywhere** - fighting the good fight against impossible deadlines  \n🏚️ **The Balkans** - where we turn bugs into features and coffee into code  \n\n## 🤝 Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n**Especially welcome:**\n- 🐛 Bug fixes (we've made plenty, we know)\n- ✨ New features (make it better than PhpStorm, let's show them!)\n- 🌍 Translations (Balkan languages first, obviously)\n- 📝 Documentation (in proper English, not our Balkan English)\n- ☕ Coffee donations (Bitcoin accepted, we're modern Slavs)\n\n### Development\n\n```bash\n# Clone and build\ngit clone https://github.com/yourusername/php-sunshine.git\ncd php-sunshine\ncargo build\n\n# Run tests\ncargo test\n\n# Run with debug logging\nRUST_LOG=debug cargo run\n\n# Format code\ncargo fmt\n\n# Run linter\ncargo clippy\n```\n\n## ⚡ Performance\n\n- **Startup**: \u003c 50ms\n- **Memory**: \u003c 10MB typical usage\n- **File Opening**: Instant for files \u003c 10MB\n- **Rendering**: 60 FPS smooth scrolling\n\nBuilt with:\n- 🦀 **Rust** - Memory safety \u0026 performance\n- 📺 **Ratatui** - Terminal UI framework\n- 🔀 **Ropey** - Efficient text buffer\n- 📂 **Ignore** - Gitignore support\n- ⚡ **Tokio** - Async runtime\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file\n\n## 🌟 Star History\n\nIf you find PHP Sunshine useful, please ⭐ star the repo!\n\n## 💬 Community\n\n- 🐛 Issues: [GitHub Issues](https://github.com/yourusername/php-sunshine/issues)\n- 💡 Features: [GitHub Discussions](https://github.com/yourusername/php-sunshine/discussions)\n- 📧 Contact: Smoke signals work (we're in the Balkans)\n\n## 🏆 Hall of Shame (Things We've Debugged)\n\n- ✅ PrestaShop 1.6 module with 15,000 lines in one file\n- ✅ Laravel project with `dd()` in production (client found it)\n- ✅ Symfony config with more YAML than a Kubernetes deployment\n- ✅ PHP 5.3 code that \"still works, don't touch it\"\n- ✅ WordPress plugin disguised as a \"simple modification\"\n- ✅ \"Quick fix\" that became a 6-month project\n- ✅ Code commented in 3 languages, none of them English\n\n**If you've debugged any of these, you're one of us. Welcome home.** 🏡\n\n## 🎉 Fun Facts\n\n- Lines of code written: **1,673**\n- Cups of coffee consumed: **∞**\n- \"Why did I choose PHP?\" moments: **Daily**\n- Money saved from PhpStorm: **€200/year**\n- Satisfaction from building it ourselves: **Priceless**\n\n---\n\n## 🚀 Final Words\n\n**Built with ❤️, Rust, rakija, and pure Balkan stubbornness!** 🦀☀️🇷🇸🇷🇴\n\n*\"When JetBrains wants your money but you'd rather spend it on čevapi and sarma.\"*\n\n*\"Fast, beautiful, and built for the frameworks you love (and the legacy code you're forced to maintain).\"*\n\n### 🤝 Join the Revolution\n\nStop paying for IDEs. Start building them yourself.\n\n**PHP Sunshine: Because real Slavs don't pay subscriptions, they write Rust.** 💪\n\n---\n\n*Made in Serbia 🇷🇸 and Romania 🇷🇴 with love, spite, and way too much caffeine.*\n\n*P.S. - If this IDE saves you money, buy your babushka those slippers. She deserves it.* 👵❤️\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsapoz%2Fphpsunshine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farsapoz%2Fphpsunshine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsapoz%2Fphpsunshine/lists"}