A full-stack developer is a type of software developer who is proficient in both front-end and back-end development. They are able to work on all aspects of a web development project, from the design and layout of the user interface to the server-side logic and database management. They should have knowledge of various programming languages, frameworks, tools and also understand database management systems, API design, version control and web security.