{"id":14957347,"url":"https://github.com/webkom-co/airframe-next","last_synced_at":"2025-05-08T21:22:11.240Z","repository":{"id":41098620,"uuid":"204020779","full_name":"webkom-co/airframe-next","owner":"webkom-co","description":"Free Open Source High Quality Dashboard based on Bootstrap 4 \u0026 React 16 + Next.js: http://airframe.nextjs.webkom.co","archived":false,"fork":false,"pushed_at":"2022-06-07T14:12:41.000Z","size":5181,"stargazers_count":190,"open_issues_count":7,"forks_count":51,"subscribers_count":9,"default_branch":"airframe--starter","last_synced_at":"2025-03-31T18:21:38.779Z","etag":null,"topics":["admin","admin-dashboard","airframe","bootstrap4","next","nextjs","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webkom-co.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-23T15:04:17.000Z","updated_at":"2025-02-24T14:26:32.000Z","dependencies_parsed_at":"2022-07-24T20:32:04.234Z","dependency_job_id":null,"html_url":"https://github.com/webkom-co/airframe-next","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webkom-co%2Fairframe-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webkom-co%2Fairframe-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webkom-co%2Fairframe-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webkom-co%2Fairframe-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webkom-co","download_url":"https://codeload.github.com/webkom-co/airframe-next/tar.gz/refs/heads/airframe--starter","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253150093,"owners_count":21861831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","admin-dashboard","airframe","bootstrap4","next","nextjs","react"],"created_at":"2024-09-24T13:14:46.093Z","updated_at":"2025-05-08T21:22:11.202Z","avatar_url":"https://github.com/webkom-co.png","language":"JavaScript","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects"],"sub_categories":[],"readme":"# Airframe Next\n\nHigh Quality **Dashboard / Admin / Analytics template** that works great on any smartphone, tablet or desktop. Available as **Open Source as MIT license.**\n\n- [**View Demo**](http://airframe.nextjs.webkom.co)\n- [jQuery Version](http://dashboards.webkom.co/jquery/airframe) \n- [React Version](https://github.com/0wczar/airframe-react/)\n- [Angular Version](http://dashboards.webkom.co/angular/airframe) - _Documentation in preparation_\n- [Vue Version](http://dashboards.webkom.co/vue/airframe) - _Documentation in preparation_\n- [MVC.Net Version](http://dashboards.webkom.co/net-mvc/airframe) - _Documentation in preparation_\n- *Sketch Files (Soon)*\n\n![aiframe-2019-light-primary-ExchangeTrading2x-bfc026c1-0477-45c8-ba55-f6dd43141e4c](https://user-images.githubusercontent.com/2330394/63061353-20ea4600-bef5-11e9-84c8-000a6dceea4d.png)\n\n# Introduction\n\n**Airframe Dashboard** with a minimalist design and innovative Light UI will let you build an amazing and powerful application with great UI. Perfectly designed for large scale applications, with detailed step by step documentation.\n\nThis Airframe project is based on [NextJs](https://github.com/zeit/next.js/) - a popular framework made for React with great Server Side Rendering support. Includes customized [Reactstrap](https://reactstrap.github.io)\nfor Bootstrap support. Any topic that you won't find here is probably described in NextJs documentation.\n\n_Note: If you want to use this project in production, you will need a server supporting NodeJs._\n\n## Initial Configuration:\nYou need to have [NodeJs](https://nodejs.org/en/) (\u003e= 10.0.0) installed on your local machine, before attempting to run a dev environment.\n\n1. Extract contents of the package to your local machine.\n2. Using the Terminal navigate to the extracted contents.\n3. Run `npm install`.\n\nMake sure you have a file called `.npmrc` in the extracted directory. Those files are typically hidden in Unix based systems.\n\n### Development\nTo start the development environment type `npm run dev` in the console. This will start a development server with hot reloading enabled.\n\n### Production\nYou can use a shell script included with the package. If you are using a Unix based system run `./build-dist.sh` from the terminal, and you will have a ready to deploy package in the `/dist` directory.\n\nIf you can't use the shell script you need to prepare the package manually:\n1. Run `npm run build`\n2. Copy those contents to the target machine\n    * `.next`\n    * `static`\n    * `package.json`\n    * `.npmrc`\n3. Run `npm install` on the server where you copied the above contents.\n4. You can now start the app by running `npm start`\n\n### Build Customization\nYou can add additional build features by adding [next plugins](https://github.com/zeit/next-plugins) and configuring them inside the `next.config.js` file.\n\n## Project Details\nSome points of interest about the project project structure:\n\n* `components` - global React components should go here\n* `styles` - styles added here won't be treated as CSS Modules, so any global classes or library styles should go here\n* `features` - page specific components should be found here\n* `features/Layout` - the `AppLayout` component can be found here which hosts page contents within itself. You can change the Layout component for each page.\n* `core/colors.js` - exports an object with all of the defined colors by the Dashboard. Useful for styling JS based components - for example charts.\n* `pages` - Page components should be here. NextJs will automatically map the file names to Route URLs.\n\n### Routing\nRoute components should be placed in separate directories inside the `/routes/` directory. Next you should open `/routes/index.js` file and attach the component. You can do this in two diffrent ways:\n\n#### Static Imports\nPages imported statically will be loaded eagerly on PageLoad with all of the other content. There will be no additional loads when navigating to such pages **BUT** the initial app load time will also be longer. To add a statically imported page it should be done like this:\n\n```jsx\n// Import the default component\nimport SomePage from './SomePage';\n// ...\nexport const RoutedContent = () =\u003e {\n    return (\n        \u003cSwitch\u003e\n            { /* ... */ }\n            { /* Define the route for a specific path */ }\n            \u003cRoute path=\"/some-page\" exact component={SomePage} /\u003e\n            { /* ... */ }\n        \u003c/Switch\u003e\n    );\n}\n```\n\n#### Routing\nRouting system is handled by NextJs itself. You can find the documentation here - [NextJs Routing](https://nextjs.org/docs#routing)\n\n#### Route specific Layout\nSometimes you might want to display additional content in the Navbar or the Sidebar. To do this you should define a customized Layout component for a particular Page. Example:\n\n1. Create a new Layout component in `features/layout`. Take the `LayoutDefault` component as an example.\n2. Open the Page Component for a particular route. For example `pages/example-page.js`.\n3. Set the custom Layout Component like this:\n```jsx\nimport React from 'react';\n\nimport { CustomLayout } from\n    './../../features/Layout/CustomLayout';\n\nconst ExamplePage = () =\u003e (\n    { /* Page Content Here */ }\n);\nExamplePage.layoutComponent = CustomLayout;\n\nexport default ExamplePage;\n```\n\n## Theming\nYou can set the color scheme for the sidebar and navbar by providing `initialStyle` and `initialColor` to the `\u003cThemeProvider\u003e` component which should be wrapping the `\u003cLayout\u003e` component.\n\nPossible `initialStyle` values:\n* light\n* dark\n* color\n\nPossible `initialColor` values:\n* primary\n* success\n* info\n* warning\n* danger\n* indigo\n* purple\n* pink\n* yellow\n\n### Programatic Theme Changing\nYou can change the color scheme on runtime by using the `ThemeConsumer` from the components. Example:\n```jsx\n// ...\nimport { ThemeContext } from './../components';\n// ...\nconst ThemeSwitcher = () =\u003e (\n    \u003cThemeConsumer\u003e\n        ({ onChangeTheme }) =\u003e (\n            \u003cReact.Fragment\u003e\n                \u003cButton onClick={() =\u003e onThemeChange({ style: 'light' })}\u003e\n                    Switch to Light\n                \u003c/Button\u003e\n                \u003cButton onClick={() =\u003e onThemeChange({ style: 'dark' })}\u003e\n                    Switch to Dark\n                \u003c/Button\u003e\n            \u003c/React.Fragment\u003e\n        )\n    \u003c/ThemeConsumer\u003e\n);\n\n```\n\nOptions provided by the `ThemeConsumer`:\n* **style** - current theme style\n* **color** - current theme color\n* **onChangeTheme({ style?, color? })** - allows to change the theme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebkom-co%2Fairframe-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebkom-co%2Fairframe-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebkom-co%2Fairframe-next/lists"}