# Folder structures

**URL:** https://d.strumenta.community/t/folder-structures/1402
**Category:** Questions&Answers
**Tags:** dsl
**Created:** [November 4, 2021, 8:13pm UTC](https://d.strumenta.community/t/folder-structures/1402 "2021-11-04T20:13:23Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![krzys.klein](https://d.strumenta.community/user_avatar/d.strumenta.community/krzys.klein/32/544_2.png) [@krzys.klein](https://d.strumenta.community/u/krzys.klein)
#### Post date: [November 4, 2021, 8:13pm UTC](https://d.strumenta.community/t/folder-structures/1402/1 "2021-11-04T20:13:24Z")

</div>

Hi!

I noticed that in my recent projects I’ve spent a lot of work setting up the project structure (mainly arranging folders/directories - boring stuff but someone had to make it).  
And the way I usually documented the work done is a text file, like this:

```auto
# Source files
|- src
   |- modules
      |- auth # Auth module
         |- api
         |- domain
         |- services
         |- infrastructure
      |- core
         |- a few # Folder name with space!
         |- other
         |- folders
# Documentation
|- doc
   |- modules
      |- foo
      |- bar

```

This looks like a pretty good example for a DSL, but I always did it manually ☹

Do you know any tool that could the below?

- create folders from a file containing the structure
- build the structure file from existing folder structure

Would be super awesome if it could also:

- initialize java/dotnet/angular/react/whatever projects there
- create files from some templates, like class files
- have an editor, or plugin a for vs code for easier editing/refactoring

If not maybe I will create one - should be simple enough for a novice language engineer like me 😃

Thanks 🙂

---

<div class="post-metadata">

### Author: ![pjmolina](https://d.strumenta.community/user_avatar/d.strumenta.community/pjmolina/32/78_2.png) [@pjmolina](https://d.strumenta.community/u/pjmolina)
#### Post date: [November 4, 2021, 9:50pm UTC](https://d.strumenta.community/t/folder-structures/1402/2 "2021-11-04T21:50:03Z")

</div>

Hi: Take a look to [https://yeoman.io](https://yeoman.io)  
I think will cover well some of your requirements.

---

<div class="post-metadata">

### Author: ![jurgen.vinju](https://d.strumenta.community/user_avatar/d.strumenta.community/jurgen.vinju/32/20_2.png) [@jurgen.vinju](https://d.strumenta.community/u/jurgen.vinju)
#### Post date: [November 6, 2021, 5:30pm UTC](https://d.strumenta.community/t/folder-structures/1402/3 "2021-11-06T17:30:44Z")

</div>

Definitely something up rascal’s alley. You’d write a grammar and use it’s standard IO module to give it semantics by writing a small interpreter that uses concrete pattern matching. Templates are built-in too. [Http://www.rascal-mpl.org](Http://www.rascal-mpl.org)

---

<div class="post-metadata">

### Author: ![ahmedmidingoyi](https://d.strumenta.community/letter_avatar_proxy/v4/letter/a/73ab20/32.png) [@ahmedmidingoyi](https://d.strumenta.community/u/ahmedmidingoyi)
#### Post date: [November 11, 2021, 4:39pm UTC](https://d.strumenta.community/t/folder-structures/1402/4 "2021-11-11T16:39:36Z")

</div>

Take a look at [GitHub - cookiecutter/cookiecutter: A command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, VueJS projects.](https://github.com/cookiecutter/cookiecutter)
