π portal
is a framework for rapidly building rich data portal frontends using a modern frontend approach. portal
can be used to present a single dataset or build a full-scale data catalog/portal.
portal
is built in Javascript and React on top of the popular Next.js framework. portal
assumes a "decoupled" approach where the frontend is a separate service from the backend and interacts with backend(s) via an API. It can be used with any backend and has out of the box support for CKAN.
- πΊοΈ Unified sites: present data and content in one seamless site, pulling datasets from a DMS (e.g. CKAN) and content from a CMS (e.g. wordpress) with a common internal API.
- π©βπ» Developer friendly: built with familiar frontend tech Javascript, React etc
- π Batteries included: Full set of portal components out of the box e.g. catalog search, dataset showcase, blog etc.
- π¨ Easy to theme and customize: installable themes, use standard CSS and React+CSS tooling. Add new routes quickly.
- 𧱠Extensible: quickly extend and develop/import your own React components
- π Well documented: full set of documentation plus the documentation of NextJS and Apollo.
- π Build with modern, familiar frontend tech such as Javascript and React.
- π NextJS framework: so everything in NextJS for free React, SSR, static site generation, huge number of examples and integrations etc.
- SSR => unlimited number of pages, SEO etc whilst still using React.
- Static Site Generation (SSG) (good for small sites) => ultra-simple deployment, great performance and lighthouse scores etc
- π Typescript support
Install a recent version of Node. You'll need Node 10.13 or later.
Install yarn
.
Create a demo portal (for a single dataset):
# note: we have to use `yarn` until #529 is resolved ...
yarn create next-app -e https://github.com/datopian/portal.js/tree/main/examples/dataset-frictionless
# choose a name for your portal when prompted e.g. your-portal or go with default my-app
# then run it
cd your-portal
yarn dev
You should see the demo portal running.
You can try it out with other Frictionless datasets.
Check out more of the examples on how to create a portal for your dataset or datasets in the examples
directory e.g.
Portal.JS used to be Recline(JS). If you are looking for the old Recline codebase it still exists: see the recline
branch. If you want context for the rename see this issue.