<p>I asked Lars the same question in the Q&amp;A, his answer was that your best bet is to copy one of the Plutus Pioneer Program lectures (preferably the last one), remove the unnecessary modules and create your own ones.</p>
<p>So the steps would be:</p>
<ul>
<li>Chose the lecture you prefer (e.g. week06)</li>
<li>Copy the hash tag of this lecture and build the Plutus repository, as you would doing a lecture's homework</li>
</ul>
<pre><code>$ git checkout 8a20664f00d8f396920385947903761a9a897fe0
$ nix build -f default.nix plutus.haskell.packages.plutus-core
</code></pre>
<ul>
<li>Copy the chosen lecture directory to your environment</li>
</ul>
<pre><code>$ cp ./plutus-pioneer-program/code/week06/ ./my-environment/
</code></pre>
<ul>
<li>Rename what you want, remove the unnecessary modules (remember to remove it in your cabal file as well) and add your own ones (add it to the cabal file)</li>
</ul>

CC BY-SA 4.0
2021-08-02T10:26:28.587Z
Just bear in mind that you may want to keep this framework in tune with the Plutus code by updating the Plutus commit in project.cabal. There is still a lot of flux in the code as we are still pre-life. It might be best to compare the project.cabal with one from a later Pioneer lecture.
vcwebco
CC BY-SA 4.0
2021-08-02T19:37:49.403Z
Agreed, I mentioned week06, because that was the last one from the second cohort when I posted the answer
Mateus
CC BY-SA 4.0
2021-08-05T15:45:09.800Z
Okay but this limits the use case since tag version is lecture-specific. But I guess as @vcwebco mentions this will constantly be changing - would be good to have site where plutus tag->use case is continuously updated. For now, I take `cabal.project` from `plutus-starter` as-is and update `.cabal` depending on whats missing when I run `cabal build`. Afaik these are the only two files needed to build from scratch.
Hud
CC BY-SA 4.0
2021-07-30T11:33:30.883Z
2021-07-30T11:33:30.883Z
Mateus
<p>So I am trying to start a plutus project from scratch, as we are always just editing the .hs source files in the plutus pioneering program homeworks, wondering what are the bare necessary files needed in a repo, and how to set these up? ie cabal.project, hie.yaml, .cabal file, etc.</p>
<p>So far I see this <a href="https://github.com/input-output-hk/plutus-starter" rel="noreferrer">starter</a>. Does anyone have any other resources / tutorials that works on this repo? Would it make sense to have a short lecture on this in the future?</p>

CC BY-SA 4.0
2021-07-19T18:32:16.093Z
I was looking for a template like this when starting a personal project. I'm sure others will appreciate this too.
Mitchell Turner
<plutus><plutus-pioneer-program><cabal>
plutus starter course
# plutus starter course

(Asked by: username_0 on 2021-07-19)

So I am trying to start a plutus project from scratch, as we are always just editing the .hs source files in the plutus pioneering program homeworks, wondering what are the bare necessary files needed in a repo, and how to set these up? ie cabal.project, hie.yaml, .cabal file, etc.

So far I see this [starter](https://github.com/input-output-hk/plutus-starter). Does anyone have any other resources / tutorials that works on this repo? Would it make sense to have a short lecture on this in the future?

**Tags:** plutus, plutus-pioneer-program, cabal
> **Comments:**
> **username_1**: I was looking for a template like this when starting a personal project. I'm sure others will appreciate this too.  

---

## 1 answers

### Answer by username_2 on 2021-07-30. Score: 6

I asked Lars the same question in the Q&A, his answer was that your best bet is to copy one of the Plutus Pioneer Program lectures (preferably the last one), remove the unnecessary modules and create your own ones.
So the steps would be:

Chose the lecture you prefer (e.g. week06)
Copy the hash tag of this lecture and build the Plutus repository, as you would doing a lecture's homework

$ git checkout 8a20664f00d8f396920385947903761a9a897fe0
$ nix build -f default.nix plutus.haskell.packages.plutus-core


Copy the chosen lecture directory to your environment

$ cp ./plutus-pioneer-program/code/week06/ ./my-environment/


Rename what you want, remove the unnecessary modules (remember to remove it in your cabal file as well) and add your own ones (add it to the cabal file)

> **Comments:**
> **username_3**: Just bear in mind that you may want to keep this framework in tune with the Plutus code by updating the Plutus commit in project.cabal. There is still a lot of flux in the code as we are still pre-life. It might be best to compare the project.cabal with one from a later Pioneer lecture.  
> **username_2**: Agreed, I mentioned week06, because that was the last one from the second cohort when I posted the answer  
> **username_0**: Okay but this limits the use case since tag version is lecture-specific. But I guess as @vcwebco mentions this will constantly be changing - would be good to have site where plutus tag->use case is continuously updated. For now, I take `cabal.project` from `plutus-starter` as-is and update `.cabal` depending on whats missing when I run `cabal build`. Afaik these are the only two files needed to build from scratch.  

---

