I think to answer this project I would start with the abstraction that I often refer to as a design pattern, and in this particular case the design pattern “MVC”. This stands for Model, View, and Controller, and in many contexts the front-end is the “View” (what the user sees), the back-end is the “Controller” (what does the work), and the database or other permanent data store is the “Model” (what stores the information for later). I like to build middle-out meaning that I first consider what my application needs to DO (like, log in users, or update account information, or run queries, etc.), and then build out the business logic that it will use to accomplish this. In doing this, it helps me define what I need to store (the model), and how the front-end will interact with the back-end. Now, going into great detail on how the front-end and back-end are integrated.
The View takes many forms, but at its heart, on the web, it is HTML, JavaScript, and CSS. A given view (like your homepage, or accounts page), or a partial view (perhaps your header, or footer) may be integrated to your framework (as with ERB templates in Ruby on Rails, or Django templates in Django), or it may be entirely separate (and potentially written with a front-end JavaScript framework, like Angular, or Backbone, or Ember).