openshiporg / openship

multi-channel fulfillment at scale
https://openship.org
GNU Affero General Public License v3.0
1.05k stars 76 forks source link
3pl e-commerce fulfillment marketplace-api netlify nextjs oms order-management order-management-system shopify vercel warehouse warehouse-management-system

**Openship is an operations platform that enables multi-channel fulfillment** [Website](https://openship.org) · [Documentation](https://docs.openship.org) · [Openship Cloud](https://openship.org/signup)

Running locally

To get Openship running on your local machine:

Clone the repo

git clone https://github.com/openshiporg/openship

Rename example.env to .env and fill out these required values

//.env
FRONTEND_URL=http://localhost:3000
DATABASE_URL=postgresql://postgres:example@url:3000/postgres
SESSION_SECRET=OH_PLEASE_PLEASE_PLEASE_CHANGE_ME

Be sure to replace DATABASE_URL with a postgres connection string.

You can run postgres locally or get a database online.

Start the application

Run the following commands start up Openship:

$ cd openship
$ yarn install
$ yarn dev

Openship: http://localhost:3000

Once the application is running, go to localhost:3000. If there are no users in the database, you'll be redirected to localhost:3000/init where you can create the admin user.

GraphQL Playground: http://localhost:3000/api/graphql

Use the playground to build and run queries/mutations against the API.

Deployment

Openship uses Next.js, so naturally, it can be hosted anywhere that supports Node.js. Openship also requires a postgres database.

1-Click Deployment

These deployment services offer Node.js and postgres databases so Openship can be deployed in 1-click.

Railway

Deploy on Railway

Render

Deploy to Render

Vercel

Before you click the Vercel deploy button below, be sure to get a postgres database connection string. Vercel has database storage where you can create a postgres database by following these instructions. Be sure to use the POSTGRES_PRISMA_URL as DATABASE_URL.

Deploy with Vercel

Next.js Deployment

To deploy on platforms that don't support databases like Netlify, you'll need to pass a postgres connection string as the DATABASE_URL variable.

Netlify

Deploy to Netlify

After the site is deployed, we need to add the correct deployment URL (ending in netlify.app or your custom domain).

Go to site settings > build & deploy > environment and add these variables:

  FRONTEND_URL=https://yourapp.netlify.app

Replace FRONTEND_URL with the url ending in netlify.app. Redeploy the site.

Docker

Create a copy of example.env named .env and cusotmize the session secret, as well as the postgres user/password/dbname as you wish:

cp example.env .env

The project datase init is coupled with the build system, so we have to start the postgres service before building:

mkdir ./volumes/postgres/data
docker-compose up -d postgres

Now build and start the OpenShip container itself:

docker-compose up -d

The web app should be available at curl localhost:3100. If it is not, please check docker-compose logs.

Finally, expose the localhost:3100 to the desired public host.

Credits

Openship wouldn't be here without these great projects