Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ochirach's avatar

Large Scale project design

VERSION: LARAVEL 5.4

Hi, I want to design a large scale application which is similar to below and need advice on how I should design the project in Laravel 5.4

Application type: School Application

Access Levels (with brief summary of abilities): • Teachers o Calendar, View all students, analyze student progress, etc • Students o Can view calendar, past papers, etc • Parents o Can view their students (i.e children) progress be it test scores, calendar, school fees, etc • System Administrator o Responsible for managing staff access on system • Headmaster o Can manage teachers i.e review class performance, calendars, schedule events, etc • Finance o Manages invoices, fees, etc

Example Folder structure (that I would normally use for php only project):

Folder Depth 0

  1. Dashboard
  2. Calendar
  3. Finances
  4. Students

Folder Depth 1

  1. Student Fees
  2. Classes

Folder Depth 2

  1. School Fees
  2. Bus pass
  3. Primary
  4. Secondary

Folder Depth 3 Year 1 Year 2 Year 3 Year … Year … Year … Year 11 Year 12 Year …

As shown above in access level summaries, various access levels will have access to past papers, all have access to calendar and homepage, only finance can view/update/create/delete all invoices, etc

What is the recommended way to convert this concept to a MVC format for Laravel project (i.e a school application) that has these requirements? Should I simply create this exact folder structure within the views? And for routes, will I have to wrap each access levels pages within conditionals for each access level?

NOTE: I am moving from a plain PHP project to a php framework project therefore I am used to just creating the folders for each section as shown above

0 likes
4 replies
Web Confection's avatar

@OCHIRACH Big dirty learning curve ahead. Before you even start to think about building your solution I would take a few hours to complete a some simple lessons on Laracasts and build a simple to-do app or similar. It will answer many of your questions and fuel a whole new set of questions moving forward.

Good luck

martinbean's avatar

@ochirach Building a "large" application is no different to building a "small" or "medium" application, you just have more files.

Any application starts with modelling your entities. If you didn't get your models and relationships right at the beginning then that will only cause problems down the line. Once you have defined your entities, you can create resourceful controllers around them.

gregrobson's avatar
Level 6

Build a very small section of your large app first. Learn from what works (and doesn't) then incrementally add more features (and more complex features).

If you try building it all out from the start you are likely to get half way through and realise something can be done in a better way and will want to rewrite the half you have done!

@martinbean - I'm inclined to agree with @CJJ - when you're coming to a framework for the first time with a large project, I would always favour an agile/incremental approach instead of architecting the whole application with limited knowledge/experience of its capabilities/application to the task. (I know through bitter experience personally!).

@ochirach - have a look at some of the tutorials, start with getting logged in/logged out and a few bits of routing first - possible forms and validation would be a good step 2! The community is always here to help if you get stuck :)

ochirach's avatar

Many thanks to all of you for the various guides. Normally I setup my directories to give myself a mental map of the project as I build it piece-by-piece.

I have gone through various tutorials on YouTube (though they are the common Laravel blog tutorials) and I am using one as a step-by-step guide on my project start to get the app initialized.

Way forward: I'll start with getting all access levels dashboards up and running then as @martinbean mentioned, i'll list all entities (be it Calendar, Notifications, Charts, etc) to capture the entire scope of controllers. Once I reach this milestone i'll play around with various solutions to arrange the various app sections.

Definitely a Big dirty learning curve

Please or to participate in this conversation.