Throughout this series, we will construct a comprehensive backend utilizing contemporary tools and cutting-edge concepts. My earnest desire is for you to accompany this journey from its inception, following the episodes in the order of their publication. This sequential approach is designed to facilitate a thorough understanding of the foundational concepts, making it particularly beneficial for beginners. However, if you happen to be an expert in the field, feel free to leverage your skills and customize the process to align with your specific objectives. Whether you're just starting out or a seasoned professional, there's something valuable for everyone in this series as we delve into the intricacies of backend development.
Project Setup
Let's initiate the project setup and push it to GitHub. In this endeavor, we will be employing various frameworks, libraries, and programming languages. The selection of tools is independent of the project structure. Below is a list of tools we will be utilizing:
- Node.js - version 16 or above
- PNPM - Package Manager (PNPM will also be employed for managing a monorepo)
- GraphQL - we will use tools like Hasura , Apollo Server 4 and GraphQL Tools
- Express - Server
- Prisma - ORM
As the project progresses, additional tools may be incorporated into this list.
Create a Monorepo
Assuming PNPM is installed (for installation instructions, refer to pnpm), let's create a monorepo:
mkdir api-monorepo
cd api-monorepo
# Create an API folder
mkdir api
# Initialize PNPM project
pnpm init
# Initialize PNPM monorepo configuration
touch pnpm-workspace.yaml
# Add the following in the workspace file
packages:
- "api"
- "frontend" # This is optional for now
# setup api project
cd api
# initialize project
pnpm init
# install initial dependencies
pnpm add -D typescript @types/node
# initialize typescript
npx tsc --init
# modify tsconfig.json to suit your development requirements. you might want to enable more features in that file.
With these steps completed, we are prepared to weave together the components of our project. This marks the beginning of our successful project journey.
It is advisable to commit our modifications and push them to the GitHub repository. This precaution ensures that, in the event of any issues with our local version, we can easily retrieve the latest version from the remote repository. For further insights on GitHub and its functionalities please refer to github documementation .
The entirety of this project is available to the public on Github, where you can find all the settings and components featured in the series. Each part of the series corresponds to a branch within the repository. To access the completed project, simply navigate to the main
branch.