Joomla has an MVC library build in from which you can extend your Model, View and Controller classes to build a component.
Official documentation on building an MVC Component: https://docs.joomla.org/J3.x:Developing_an_MVC_Component
The official documentation is lengthy but also required reading for anyone starting out building components. But of course no one would hand craft a Joomla MVC Component in the way that the documentation walks you through it. The practical options are as follows.
- Use a Component Creator eg. https://www.component-creator.com/
- Start with an official boilerplate, ie. https://github.com/joomla-extensions/boilerplate
- Copy an existing core component, eg. weblinks, and search and replace the file names and extension names then modify from there.
- Extend Joomla MVC classes without your reusable code and then extend these for your particular component.
- Use Framework on Framework or another component framework.
- Building without the MVC classes. Building a component without using the MVC classes at all is rather more uncharted because you could really be building anything. Check out the project page here: Building Joomla Component without the Joomla MVC classes