Contractor payments as easy as 1-2-3.
You'll need:
- Docker
- Node.js (see
.node-version)
The easiest way to set up the development environment is to use the bin/setup script, but feel free to run the commands in it yourself to:
- Set up Ruby (ideally using
rbenv/rvm) and PostgreSQL - Install dependencies using
pnpm iandcd backend && bundle i - Set up your environment by either using
pnpx vercel env pull .envorcp .env.example .envand filling in missing values and your own keys - Run
cd backend && gem install foreman
You can start the local app using the bin/dev script - or feel free to run the commands contained in it yourself.
Once the local services are up and running, the application will be available at https://flexile.dev
Check the seeds for default data created during setup.
Issue: When running bin/dev (after bin/setup) encountered FATAL: role "username" does not exist
Resolution: Manually create the Postgres user with:
psql postgres -c "CREATE USER username WITH LOGIN CREATEDB SUPERUSER PASSWORD 'password';"
Likely caused by the bin/setup script failing silently due to lack of Postgres superuser permissions (common with Homebrew installations).
Issue: First attempt to run bin/dev failed with Redis::CannotConnectError on port 6389.
Resolution: Re-running bin/dev resolved it but data wasn't seeded properly, so had to run db:reset
Likely caused by rails attempting to connect before Redis had fully started.
# Run Rails specs
bundle exec rspec # Run all specs
bundle exec rspec spec/system/roles/show_spec.rb:7 # Run a single spec
# Run Playwright end-to-end tests
pnpm playwright testClerk
- Go to clerk.com and create a new app.
- Name it whatever you like and disable all login methods except Email Address and Google.
- Once created, copy the Publishable Key into
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYand Secret Key intoCLERK_SECRET_KEYin the .env file.
For Playwright end-to-end tests to work locally, you need to manually create 4 specific test users in your Clerk dashboard that match the hardcoded values in e2e/helpers/auth.ts:
-
Go to your Clerk dashboard → Users → Create User
-
Create the following 4 users with these exact email addresses:
-
After creating each user, copy their generated User ID from the Clerk dashboard
-
Update the corresponding user IDs in
e2e/helpers/auth.tsin theclerkTestUsersarray to match the actual IDs generated by Clerk
Important: Clerk generates unique user IDs that cannot be manually set during user creation. The IDs currently in the code (user_2rV0f8ymVAsk3S0V6EhfSiQcGbK, etc.) are examples and must be replaced with the actual IDs from your Clerk dashboard.
Without these test users, running pnpm playwright test e2e/helpers/auth.ts will fail locally.
Stripe
- Go to your
Developersdashboard at stripe.com. - Turn on
Test mode. - Go to the
API Keystab and copy the Publishable Key intoNEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYand Secret Key intoSTRIPE_SECRET_KEYin the .env file.
Wise
- Go to sandbox.transferwise.tech and make a brand new Wise account using the register option and following Wise instructions.
- Once you got your account set up click on your profile.
- Copy your Membership number and paste it into
WISE_PROFILE_IDin the .env file. - Go to Integrations and Tools and then to API tokens.
- Create a new API token making sure it is set to Full Access.
- Reveal the full API key and copy it into
WISE_API_KEYin the .env file.
Flexile is licensed under the MIT License.