npoint.io is a lightweight data store for your app or prototype.
Save FAQ answers, customer stories, configuration data, or anything else that will fit in a JSON blob. Then access your data directly via API.
Once your app is live, come back later to edit your saved JSON without having to redeploy. Or share a login with a friend so they can help you experiment! Features like schmema validation and locking mean you can make these changes confidently, without breaking your app.
Contributions are welcome!
Please open an issue to discuss proposed changes, rather than opening a pull request directly.
yarn
bundle
rails s -p 3001
yarn dev
Setup:
- Install Chrome
- Install chromedriver (
brew install chromedriver
on mac)
rspec
yarn test # no jest tests yet
Important note: Rspec integration tests run against the compiled version of the
app in app/assets
. Build with yarn build
first, or set up capybara to run against
your live webpack version (I haven't done this yet, but have ideas in spec_helper.rb
).
# 1. Build files
yarn build
# 2. Make an "Add build files" commit
git commit -a -m "Add build files"
Push to master. This deploys staging.
Deploy prod manually via render UI.
Want to run your own instance of n:point? Go right ahead!
I'd recommend setting it up on render.com, which is what I use for npoint.io.
- Set up a hosted Potsgres DB in render, and make sure
DATABASE_URL
points there - Configure environment variables. You'll at least need
HOST
(e.g.npoint.io
) - Use these render settings:
# build command
./build.sh
# start command
./start.sh
The one piece of the app that won't work is password-reset emails, which go through a Sendgrid account. I recommend deleting the code for this and handling it yourself.
- Add sentry or similar error collection service (search:
TODO(sentry)
) - Self-host and use privacy-respecting analytics (search:
TODO(self-host)
) - More testing (search:
TODO(test)
)
Copyright (c) 2017-2018 Alexander Zirbel - Code released under the MIT
license.
n:point and the n:point logo are the property of
Alexander Zirbel.