Skip to content

SekthDroid/Skaffoldr

Repository files navigation

Skaffoldr

A cross-platform desktop application for creating and managing project directory templates with predefined folder structures.

Skaffoldr Logo

Features

  • 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

Project Structure

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

Architecture

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

Key Components

  • ProjectDirectoryManager: Manages project directory creation and validation
  • DirectoryTemplate: Defines folder structures for different project types
  • PreferencesRepository: Handles user preferences and settings
  • FormScreenViewModel: Manages UI state and business logic
  • ProjectPathBuilder: Builds the target path for project directories

Technology Stack

  • 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

Getting Started

Running the Application

  1. Clone the repository:
git clone https://github.com/SekthDroid/Skaffoldr.git
cd skaffoldr
  1. Run the desktop application:
./gradlew :composeApp:run

Building

To create a distributable package:

./gradlew :composeApp:packageDistributionForCurrentOS

Directory Templates

The application only supports this directory template:

DefaultTemplate

Project Root/
├── 01_Media/
│   ├── Video/
│   ├── Audio/
│   ├── Photos/
│   └── Graphics/
├── 02_Project/
├── 03_Exports/
├── 04_Backups/
└── 05_Assets/

Roadmap

Future Enhancements

  • More directory templates
  • Pick between different project hierarchy
    • Example:
      • {contentType}/{yyyy}/{MM}_{MMM}/{projectName}
      • {yyyy/MM}/{projectType}_{projectName}
      • {yyyy}_{MM}_{dd}_{projectName}
  • Preview of directories
  • Dark/light theme toggle
  • Improve design

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

A cross-platform desktop application for creating and managing project directory templates with predefined folder structures.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages