# I want Best Practices When Structuring Aurelia Projects

**URL:** <https://discourse.aurelia.io/t/i-want-best-practices-when-structuring-aurelia-projects/6506>\
**Category:** Best Practices\
**Created:** [August 18, 2025, 9:09am UTC](https://discourse.aurelia.io/t/i-want-best-practices-when-structuring-aurelia-projects/6506 "2025-08-18T09:09:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Morgan](https://avatars.discourse-cdn.com/v4/letter/m/0ea827/32.png) [@Morgan](https://discourse.aurelia.io/u/Morgan)\
**Post date:** [August 18, 2025, 9:09am UTC](https://discourse.aurelia.io/t/i-want-best-practices-when-structuring-aurelia-projects/6506/1 "2025-08-18T09:09:51Z")

</div>

Hey everyone,

I have been working with Aurelia & I really like the framework’s simplicity & flexibility. I sometimes find myself second guessing how I should structure my projects, as they grow larger. For smaller apps It feels pretty straightforward but once the app starts scaling, things such as organizing components, handling services & managing state become a bit tricky.

I wanted to ask the community here what are some best practices you personally follow when setting up Aurelia projects? Do you prefer a feature-based folder structure or something more layer-based? How do you keep things maintainable without overcomplicating the project?

Also, if anyone has tips on balancing Aurelia’s conventions with their own patterns, I want to hear about it. Coming from a background where I had some [ReactJS Training](https://www.igmguru.com/digital-marketing-programming/react-js-training); I see there are different ways of thinking about project design & I want to get better at aligning with Aurelia’s strengths.

Thank you.🙂

---

<div class="post-metadata">

**Author:** ![dwaynecharrington](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/dwaynecharrington/32/11_2.png) [@dwaynecharrington](https://discourse.aurelia.io/u/dwaynecharrington)\
**Post date:** [August 18, 2025, 11:04pm UTC](https://discourse.aurelia.io/t/i-want-best-practices-when-structuring-aurelia-projects/6506/2 "2025-08-18T23:04:26Z")

</div>

I usually go with a feature-first structure rather than a pure layer-based one. For me, it scales better because everything related to a feature (views, components, services, styles, tests) lives together. That way, when I need to change or extend something, I’m only touching one part of the tree, not bouncing around between /components, /services, /models, etc.

Rough structure of how I approach it usually:

```auto
src/
  features/
    dashboard/
      dashboard-page.ts
      dashboard-page.html
      dashboard-service.ts
      widgets/
        sales-chart.ts
        sales-chart.html
    profile/
      profile-page.ts
      profile-page.html
      profile-service.ts
  shared/
    components/
    services/
    utils/

```

State management also follows this pattern. Most of the time Aurelia’s DI and reactivity are enough, so I keep feature state local. When something has to be global (auth, settings, etc.) I keep a small store service in shared/services.

This way Aurelia’s conventions (like co-located .ts and .html) still shine, but the mental model stays simple as the app grows: “feature first, shared only when necessary.”

---

<div class="post-metadata">

**Author:** ![dkent600](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/dkent600/32/1603_2.png) [@dkent600](https://discourse.aurelia.io/u/dkent600)\
**Post date:** [August 24, 2025, 1:59pm UTC](https://discourse.aurelia.io/t/i-want-best-practices-when-structuring-aurelia-projects/6506/3 "2025-08-24T13:59:56Z")

</div>

@dwaynecharrington Where do you put services, for example, that are feature-scoped (not shared)?
