# Code organization of a project with multiple simultaneously developed packages

**URL:** <https://discourse.julialang.org/t/code-organization-of-a-project-with-multiple-simultaneously-developed-packages/102447>\
**Category:** New to Julia\
**Tags:** question, development, code-organization, project\
**Created:** [August 3, 2023, 12:58pm UTC](https://discourse.julialang.org/t/code-organization-of-a-project-with-multiple-simultaneously-developed-packages/102447 "2023-08-03T12:58:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Neodym](https://avatars.discourse-cdn.com/v4/letter/n/ba8739/32.png) [@Neodym](https://discourse.julialang.org/u/Neodym)\
**Post date:** [August 3, 2023, 12:58pm UTC](https://discourse.julialang.org/t/code-organization-of-a-project-with-multiple-simultaneously-developed-packages/102447/1 "2023-08-03T12:58:08Z")

</div>

Hi,

I’m developing a project that consists of multiple packages and some code that uses those packages.  
The packages will not be published in the Julia registry as it is a purely personal / learning project.

Is there some recommended way how to set this up in the filesystem using a single git repository?

For example, would this structure work:

```julia
/myproject
|- libA/
| |- src/
| | |- libA.jl
| |- Project.toml
| |- Manifest.toml
|- libB/
| |- src/
| | |- libB.jl
| |- Project.toml
| |- Manifest.toml
|- src/
| |- main.jl
|- Project.toml
|- Manifest.toml

```

where `libA` and `libB` are imported into `myproject` via `Pkg.develop()`? Or is it common to put `libA` and `libB` into a `deps/` or `libs/` folder within `myproject/`?

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [August 3, 2023, 2:59pm UTC](https://discourse.julialang.org/t/code-organization-of-a-project-with-multiple-simultaneously-developed-packages/102447/2 "2023-08-03T14:59:48Z")

</div>

A `libs` directory might be more “conventional”. Some packages like Makie.jl have a layout as you suggest:

> **[GitHub - MakieOrg/Makie.jl: Interactive data visualizations and plotting in...](https://github.com/MakieOrg/Makie.jl)**
>
> Interactive data visualizations and plotting in Julia - GitHub - MakieOrg/Makie.jl: Interactive data visualizations and plotting in Julia
