Instantly generate production-ready Node.js backend apps π
Amplication
is a robust, open-source development platform designed to revolutionize the creation of scalable and secure Node.js applications. We eliminate repetitive coding tasks and deliver production-ready infrastructure code, meticulously tailored to your specifications and adhering to industry best practices.
Our user-friendly interface fosters seamless integration of APIs, data models, databases, authentication, and authorization. Built on a flexible, plugin-based architecture, Amplication allows effortless customization of the code and offers a diverse range of integrations.
With a strong focus on collaboration, Amplication streamlines team-oriented development, making it an ideal choice for groups of all sizes, from startups to large enterprises. Our platform enables you to concentrate on your business logic, while we handle the heavy lifting.
Experience the fastest way to develop Node.js applications with Amplication.
To get started with Amplication, the hosted version of the product can be used. You can get started immediately at app.amplication.com. After the login page, you will be guided through creating your first service. The website provides an overview of the application, additional information on the product and guides can be found in the docs.
Tutorials
Quickstart Pre-requisites
- Docker
# Run the local infrastructure
docker-compose -f docker-compose.dev.yml --env-file .env.docker-compose up
# Run the amplication microservices
docker-compose --env-file .env.docker-compose up
- Node.js
- Docker
- Git
Alternatively, instead of using the hosted version of the product, Amplication can be run locally for code generation purposes or contributions - if so, please refer to our contributing section.
Pre-requisites
To be able to start development on Amplication, make sure that you have the following prerequisites installed:
- Node.js
- Docker
- Git
Create .env.local
files. When running the application, it will either read the .env.local
first (if present),
if not then it loads the .env
file which is included in the git repo. It's important to set "personalized" (I.E. if running amplication on a separate server other than localhost) environment variables in your .env.local
file while more "generic" (I.E. running amplication on localhost) environment variables would be added to the
.env
file
cp ./packages/amplication-client/.env ./packages/amplication-client/.env.local
cp ./packages/amplication-server/.env ./packages/amplication-server/.env.local
cp ./packages/local-data-service-generator-controller/.env ./packages/local-data-service-generator-controller/.env.local
cp ./ee/packages/git-sync-manager/.env ./ee/packages/git-sync-manager/.env.local
Edit packages/amplication-client/.env.local:
NX_REACT_APP_DATA_SOURCE="http://<HOST_IP_ADDRESS>:3000/graphql"
NX_REACT_APP_STORAGE_GATEWAY_URL="http://<HOST_IP_ADDRESS>:3002"
NX_REACT_APP_AUTH_LOGIN_URI="http://<HOST_IP_ADDRESS>:3000/auth/login"
NX_REACT_APP_AUTH_LOGOUT_URI="http://<HOST_IP_ADDRESS>:3000/auth/logout"
- Data Service Generator
Edit packages/local-data-service-generator-controller/.env.local
BUILD_MANAGER_URL="http://<HOST_IP_ADDRESS>:5010"
- Git Sync
To connect/sync with Github Repository. See: Connect Amplication server to GitHub.
Edit ee/packages/git-sync-manager/.env.local
GITHUB_APP_APP_ID=[github-app-app-id]
GITHUB_APP_INSTALLATION_URL=[GITHUB_APP_INSTALLATION_URL]
GITHUB_APP_PRIVATE_KEY=[GITHUB_APP_PRIVATE_KEY]
Running Amplication
Note It is also possible to start development with GitHub Codespaces, when navigating to
< > Code
, selectCodespaces
instead ofLocal
. Click on either the+
-sign or theCreate codespace on master
-button.
Amplication is using a monorepo architecture - powered by Nx Workspaces - where multiple applications and libraries exist in a single repository. To setup a local development environment the following steps can be followed:
BEFORE you run the following steps make sure:
- You have typescript installed locally on you machine
npm install -g typescript
- You are using a supported node version (check
engines
node
in the package.json) - You are using a supported npm version (check
engines
npm
in the package.json) - You have
docker
installed and running on your machine
- Clone the repository and install dependencies:
git clone https://github.com/amplication/amplication.git && cd amplication && npm install
- Run the setup script, which takes care of installing dependencies, building packages, and setting up the workspace:
npm run setup:dev
- Option 1: Running the required infrastructure - view infrastructure component logs
npm run docker:dev
- Option 2: Running the required infrastructure - run the infrastructure components in background
npm run docker:dev -- -d
- Apply database migrations
npm run db:migrate:deploy
- Option 1: To start developing, run one or more of the applications available under
serve:[application]
scripts of the package.json.
# running the server component
npm run serve:server
# running the client component
npm run serve:client
# running the data-service-generator component
npm run serve:dsg
# running the git-pull-request-service component
npm run serve:git
# running the plugin-api component
npm run serve:plugins
- Option 2: To run all the services
npm run serve:all
Unable to successfully run docker-compose -f docker-compose.dev.yml --env-file .env.docker-compose up
note: This command will restart all your docker image service
systemctl restart docker.socket docker.service
This repository is a fork of the original amplication repository with some custom changes to make it ideal for deploying & maintaining in a self-hosted way. Since this repo is a fork, we are able to receive updates from the upstream amplication repository.
Note: It's always best to update frequently as not updating for a long time causes larger issues that may be difficult to resolve at once so update as frequently as possible
Here are the steps to update the repository & deployment:
At the time of writing, we deployed Amplication in an AWS EC2 node. The instructions below will address that type of deployment
- Navigate to the Mediajel amplication fork and at the top there should be a
"Sync fork" button. You want to click on that to sync our fork from the upstream repo. After syncing, you will notice that
the
master
branch has additional commits that came from the upstream repo.
- In the EC2 instance (server) of where this is deployed, you want to turn off the
amplication
docker containers:
# Shut down the amplication microservices
docker-compose --env-file .env.docker-compose down
- Then you would want to rebuild the amplication microservices with the latest code changes
docker-compose --env-file .env.docker-compose up --build
- If everything goes well, you may deploy it in
detached
mode (I.E have it running without printing to the console)
docker-compose --env-file .env.docker-compose up -d
Note In order to run the Amplication client properly, both the client and server need to be started by the
npm run serve:[application]
command, as well as an additional component for development on a specific component.
Note 2 Error Message: ENOSPC: System limit for number of file watchers reached, watch. Perform the command:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
The development environment should now be set up. Additional information on the different application components can be found under packages/[application]
/README.md file. Happy hacking! πΎ
- Connect Amplication server to GitHub for connecting to GitHub repository.
- Website overview of the product.
- Docs for comprehensive documentation.
- Blog for guides and technical comparisons.
- Roadmap to see what features will be added in the future.
- Discord for support and discussions with the community and the team.
- GitHub for source code, project board, issues, and pull requests.
- Twitter for the latest updates on the product and published blogs.
- YouTube for guides and technical talks.
Amplication is an open-source project. We are committed to a fully transparent development process and highly appreciate any contributions. Whether you are helping us fix bugs, proposing new features, improving our documentation or spreading the word - we would love to have you as a part of the Amplication community. Please refer to our contribution guidelines and code of conduct.
-
Bug Report: If you see an error message or encounter an issue while using Amplication, please create a bug report.
-
Feature Request: If you have an idea or if there is a capability that is missing and would make development easier and more robust, please submit afeature request.
-
Documentation Request: If you're reading the Amplication docs and feel like you're missing something, please submit a documentation request.
Not sure where to start? Join our discord and we will help you get started!
A large part of this project is licensed under the Apache 2.0 license. The only exception are the components under the ee
(enterprise edition) directory, these are licensed under the Amplication Enterprise Edition license.