{"id":13553681,"url":"https://github.com/openshiporg/openship","last_synced_at":"2025-05-15T01:06:30.311Z","repository":{"id":55780993,"uuid":"523215875","full_name":"openshiporg/openship","owner":"openshiporg","description":"multi-channel fulfillment at scale","archived":false,"fork":false,"pushed_at":"2025-03-05T08:03:41.000Z","size":2964,"stargazers_count":1058,"open_issues_count":1,"forks_count":76,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-13T22:39:37.955Z","etag":null,"topics":["3pl","e-commerce","fulfillment","marketplace-api","netlify","nextjs","oms","order-management","order-management-system","shopify","vercel","warehouse","warehouse-management-system"],"latest_commit_sha":null,"homepage":"https://openship.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openshiporg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-10T05:43:01.000Z","updated_at":"2025-04-03T00:40:34.000Z","dependencies_parsed_at":"2023-02-18T12:03:42.268Z","dependency_job_id":"10a4d30d-f47d-4d08-887e-2513ef12b655","html_url":"https://github.com/openshiporg/openship","commit_stats":{"total_commits":185,"total_committers":3,"mean_commits":"61.666666666666664","dds":"0.032432432432432434","last_synced_commit":"5f2ecd6a75490ec3e12e72aa87e7e9a301164ba4"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshiporg%2Fopenship","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshiporg%2Fopenship/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshiporg%2Fopenship/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshiporg%2Fopenship/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openshiporg","download_url":"https://codeload.github.com/openshiporg/openship/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254041,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3pl","e-commerce","fulfillment","marketplace-api","netlify","nextjs","oms","order-management","order-management-system","shopify","vercel","warehouse","warehouse-management-system"],"created_at":"2024-08-01T12:02:31.046Z","updated_at":"2025-05-15T01:06:25.303Z","avatar_url":"https://github.com/openshiporg.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","TypeScript","[💸 post-capitalism](https://github.com/stars/ketsapiwiq/lists/post-capitalism)"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://openship.org\"\u003e\n    \u003cimg width=\"200px\" style=\"margin-right: 20px\" src=\"https://docs.openship.org/images/openship.svg\"\u003e\n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n**Openship is an operations platform that enables multi-channel fulfillment**\n\n[Website](https://openship.org) · [Documentation](https://docs.openship.org) · [Openship Cloud](https://openship.org/signup)\n\n\u003c/div\u003e\n\n## Running locally\n\nTo get Openship running on your local machine:\n\n### Clone the repo\n\n```\ngit clone https://github.com/openshiporg/openship\n```\n\n### Rename example.env to .env and fill out these required values\n\n```shell\n//.env\nFRONTEND_URL=http://localhost:3000\nDATABASE_URL=postgresql://postgres:example@url:3000/postgres\nSESSION_SECRET=OH_PLEASE_PLEASE_PLEASE_CHANGE_ME\n```\n\nBe sure to replace `DATABASE_URL` with a postgres connection string.\n\nYou can run postgres locally or get a database online.\n\n### Start the application\n\nRun the following commands start up Openship:\n\n```js\n$ cd openship\n$ yarn install\n$ yarn dev\n```\n\n### Openship: http://localhost:3000\n\nOnce 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.\n\n### GraphQL Playground: http://localhost:3000/api/graphql\n\nUse the playground to build and run queries/mutations against the API.\n\n## Deployment\n\nOpenship uses Next.js, so naturally, it can be hosted anywhere that supports Node.js. Openship also requires a `postgres` database.\n\n### 1-Click Deployment\n\nThese deployment services offer `Node.js` and `postgres` databases so Openship can be deployed in 1-click.\n\n#### Railway\n\n[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/new/template/31ZaPV?referralCode=fQpsld)\n\n#### Render\n\n[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/openshiporg/openship)\n\n#### Vercel\n\nBefore 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](https://vercel.com/docs/storage/vercel-postgres/quickstart#create-a-postgres-database). Be sure to use the `POSTGRES_PRISMA_URL` as `DATABASE_URL`.\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fopenshiporg%2Fopenship\u0026env=SESSION_SECRET,FRONTEND_URL,DATABASE_URL\u0026envDescription=A%20postgres%20connection%20string%20is%20used%20for%20DATABASE_URL)\n\n### Next.js Deployment\n\nTo deploy on platforms that don't support databases like [Netlify](https://netlify.com), you'll need to pass a postgres connection string as the `DATABASE_URL` variable.\n\n#### Netlify\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/openshiporg/openship#FRONTEND_URL=https://yourapp.netlify.app\u0026DATABASE_URL=postgresql://postgres:example@url:3000/postgres\u0026SESSION_SECRET=OH_PLEASE_PLEASE_PLEASE_CHANGE_ME)\n\nAfter the site is deployed, we need to add the correct deployment URL (ending in netlify.app or your custom domain).\n\nGo to site settings \u003e build \u0026 deploy \u003e environment and add these variables:\n\n```bash\n  FRONTEND_URL=https://yourapp.netlify.app\n```\n\nReplace `FRONTEND_URL` with the url ending in netlify.app. Redeploy the site.\n\n### Docker\n\nCreate a copy of example.env named `.env` and cusotmize the session secret, as well as the postgres user/password/dbname as you wish:\n\n```\ncp example.env .env\n```\n\nThe project datase init is coupled with the build system, so we have to start the postgres service before building:\n\n```\nmkdir ./volumes/postgres/data\ndocker-compose up -d postgres\n```\n\nNow build and start the OpenShip container itself:\n```\ndocker-compose up -d\n```\n\nThe web app should be available at `curl localhost:3100`. If it is not, please check `docker-compose logs`.\n\nFinally, expose the `localhost:3100` to the desired public host.\n\n## Credits\n\nOpenship wouldn't be here without these great projects\n\n- [Next.js](https://nextjs.org/)\n- [Keystone.js](https://keystonejs.com/)\n- [Prisma](https://prisma.io/)\n- [Shadcn/ui](https://mantine.dev/)\n- [Full Credits](https://github.com/openshiporg/openship/blob/main/package.json)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshiporg%2Fopenship","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenshiporg%2Fopenship","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshiporg%2Fopenship/lists"}