# πŸŒ€ PortalJS: The JavaScript framework for data portals πŸŒ€ PortalJS is a framework for rapidly building rich data portal frontends using a modern frontend approach. PortalJS can be used to present a single dataset or build a full-scale data catalog/portal. Built in JavaScript and React on top of the popular [Next.js](https://nextjs.com/) framework. PortalJS 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](https://ckan.org/). ## Features - πŸ—ΊοΈ 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, Next.js). - πŸ”‹ 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 Next.js and Apollo. ### For developers - πŸ— Build with modern, familiar frontend tech such as JavaScript and React. - πŸš€ Next.js framework: so everything in Next.js for free: Server Side Rendering, Static Site Generation, huge number of examples and integrations, etc. - Server Side Rendering (SSR) => Unlimited number of pages, SEO and more whilst still using React. - Static Site Generation (SSG) => Ultra-simple deployment, great performance, great lighthouse scores and more (good for small sites) ## Tutorials and guides ### Examples You can check out the following examples built with PortalJS. * [Data catalog with data coming from CKAN](/docs/example-ckan) * [Simple data catalog](/docs/example-data-catalog) > The [`examples` directory](https://github.com/datopian/portaljs/tree/main/examples) is regularly updated with different portal examples. ## Getting Help If you have questions about anything related to PortalJS, you're always welcome to ask our community on [GitHub Discussions](https://github.com/datopian/portaljs/discussions) or on our [Discord server](https://discord.gg/An7Bu5x8).