A cross-platform desktop application for creating and managing project directory templates with predefined folder structures.
- Template-based Directory Creation: Create project directories with predefined folder structures
- Cross-platform Support: Runs on Windows, macOS, and Linux
- Modern UI: Built with Compose Multiplatform for a native desktop experience
- Preference Management: Remembers your last used project root directory
skaffoldr/
├── composeApp/
│ └── src/
│ ├── commonMain/ # Shared code across platforms
│ ├── commonTest/ # Shared test code
│ ├── desktopMain/ # Desktop-specific code
│ └── desktopTest/ # Desktop-specific tests
├── build.gradle.kts
├── settings.gradle.kts
└── README.md
The project follows Clean Architecture principles with:
- Domain Layer: Core business logic and models
- Data Layer: Data sources and repositories
- Presentation Layer: ViewModels and UI components
ProjectDirectoryManager: Manages project directory creation and validationDirectoryTemplate: Defines folder structures for different project typesPreferencesRepository: Handles user preferences and settingsFormScreenViewModel: Manages UI state and business logicProjectPathBuilder: Builds the target path for project directories
- Kotlin Multiplatform: Cross-platform development
- Compose Multiplatform: Modern declarative UI framework
- Coroutines: Asynchronous programming
- Koin: Dependency injection
- JUnit 5: Testing framework
- FileKit: Cross-platform file operations
- Clone the repository:
git clone https://github.com/SekthDroid/Skaffoldr.git
cd skaffoldr- Run the desktop application:
./gradlew :composeApp:runTo create a distributable package:
./gradlew :composeApp:packageDistributionForCurrentOSThe application only supports this directory template:
Project Root/
├── 01_Media/
│ ├── Video/
│ ├── Audio/
│ ├── Photos/
│ └── Graphics/
├── 02_Project/
├── 03_Exports/
├── 04_Backups/
└── 05_Assets/
- More directory templates
- Pick between different project hierarchy
- Example:
{contentType}/{yyyy}/{MM}_{MMM}/{projectName}{yyyy/MM}/{projectType}_{projectName}{yyyy}_{MM}_{dd}_{projectName}
- Example:
- Preview of directories
- Dark/light theme toggle
- Improve design
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
