At the start of the global pandemic, we developed an adhoc software architecture to bring up-to-date information about food assistance resources. At its peak, we served 80,000 New Yorkers per month. This is the Food Guides. We launched in NYC and later expanded to Alabama.
The need for trusted, updated information about food assistance is still needed. We've decided to upgrade our whole system to use high configurable microservices based on open source software. It's built on the pillars of transparency, collaboration, and service. We want to make the architecture available for other organizations to adopt.
This repo is not that architecture. Instead, The Share Meals Food Guide Toolkit Website (FTW) is full stack solution for organizations to discover, learn about, and adopt that architecture.
We use 3 major components:
Expanding on our emphasis on open source and community driven development, we are also streaming our coding sessions on Twitch! Feel free to drop by, comment, and contribute: twitch.tv/sharemeals
During our Twitch streams, we also used a shared Google Drive to store diagrams, meeting notes, interview notes, and more. You can view them all here.
First, make sure you have all the .env
files setup. There are example files available:
./.env.example
./strapi/.env.example
./nextjs/.env.example
Second, run yarn in the strapi and nextjs directories.
cd strapi; yarn;
cd nextjs; yarn;
To speed up development before deploying to production, we recommend running Strapi and NextJS in development mode. This avoids building (and having to rebuild) images, which can slow down coding.
sudo docker-compose up postgres
cd strapi; yarn develop
cd nextjs; yarn develop
When loading Strapi for the first time, you'll need to create a root user.
There are 2 Collection Types:
You also want to set the proper access permissions. In your Strapi Dashboard, navigate to Settings -> Roles -> Public
and allow find
and findOne
on Page
. Assuming you are running this on localhost, you can navigate to http://localhost:1337/admin/settings/users-permissions/roles/2