{"id":27704438,"url":"https://github.com/wxs77577/adminify","last_synced_at":"2025-04-26T01:01:55.261Z","repository":{"id":98961799,"uuid":"92293536","full_name":"topfullstack/adminify","owner":"topfullstack","description":"An Admin Dashboard based on Vuetify material","archived":false,"fork":false,"pushed_at":"2018-08-27T08:56:16.000Z","size":655,"stargazers_count":961,"open_issues_count":8,"forks_count":221,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-04-22T09:03:18.282Z","etag":null,"topics":["admin","adonisjs","dashboard","sidebar","vue","vuejs","vuetify"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/topfullstack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-24T13:10:07.000Z","updated_at":"2025-04-10T16:07:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"1fa48fbd-1f3b-499a-95cf-f3d8681f5c5b","html_url":"https://github.com/topfullstack/adminify","commit_stats":null,"previous_names":["wxs77577/adminify"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topfullstack%2Fadminify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topfullstack%2Fadminify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topfullstack%2Fadminify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topfullstack%2Fadminify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/topfullstack","download_url":"https://codeload.github.com/topfullstack/adminify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250917360,"owners_count":21507562,"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","adonisjs","dashboard","sidebar","vue","vuejs","vuetify"],"created_at":"2025-04-26T01:01:48.592Z","updated_at":"2025-04-26T01:01:55.187Z","avatar_url":"https://github.com/topfullstack.png","language":"Vue","readme":"# Adminify\n\n## [Deprecated]: Please check [REST-ADMIN](https://github.com/wxs77577/rest-admin) - admin dashboard based on vue 2 and bootstrap v4\n\n[![Join the chat at https://gitter.im/vue-adminify/Lobby](https://badges.gitter.im/vue-adminify/Lobby.svg)](https://gitter.im/vue-adminify/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n- An Admin dashboard based on [Vuetify](https://vuetifyjs.com/) .\n- Data in demo use `axios-mock-adapter`\n- Better Server API is built on [AdonisJs](http://www.adonisjs.com/) . \n- Also welcome to [Adonis China](https://adonis-china.org/) .\n\n## Live Demo\n[http://adminify.genyii.com](http://adminify.genyii.com)\n\n\n## Features\n- Vue + Vue Router + Vuex + Axios.\n- Material Design Style - [Vuetify](https://vuetifyjs.com/)\n- Data Grid with server side `sort`,`search`,`pagination` and json config.\n- Dynamic Form Builder with `text`,`textarea`,`radios`,`checkboxes`,`select`,`html` input types and json config.\n- Built in `localStorage` proxy for any data types.\n- Axios Mock with `axios-mock-adapter`\n- Configurable side menu with json\n- i18n with `vue-i18n`\n- `Basic` and `Main` layouts\n- Stylus processor\n- And more of your requests.\n\n## Getting start\n1. `git clone https://github.com/wxs77577/adminify.git`\n1. Copy `src/config.sample.js` to `src/config.js`\n1. `npm install`\n1. `npm run dev`\n1. **Remove `line:6 ~ line:9` in `/src/http.js` to speed up page loading if you don't need http mock.**\n\n\u003e Use `cnpm` instead `npm` in China\n\n\n## Screenshots\n|  |  |\n|---|---|\n|![1.png](screenshots/1.png)|![2.png](screenshots/2.png)|\n|![3.png](screenshots/3.png)|![4.png](screenshots/4.png)|\n|![5.png](screenshots/5.png)|![6.png](screenshots/6.png)|\n|![7.png](screenshots/7.png)||\n|![](./screenshots/tfs-qrcode.png) Wechat Group|![](./screenshots/tfs-logo.png) Free Videos|\n\n## Config\n\u003e `src/config.js`\n```javascript\nconst baseUrl = 'http://localhost:3333'\nconst config = {\n  locale: 'en-US', //en-US, zh-CN\n  url: baseUrl,\n  debug: {\n    mock: 1, //enable mock\n    http: true, //http request log\n  },\n  api: `${baseUrl}/admin/api`\n  // locale: 'en', //en\n  // api: 'http://192.168.1.108:3333/admin/api'\n}\n```\n\n## Menu Config\n\u003e `src/menu.js`\n```javascript\nexport default [\n  { \"href\": \"/\", \"title\": \"Home\", \"icon\": \"home\" },\n  { \"href\": \"/crud/types\", \"title\": \"Types\", \"icon\": \"view_list\" },\n  { \"href\": \"/crud/posts\", \"title\": \"Posts\", \"icon\": \"view_list\" },\n  { \"href\": \"/crud/posts/create\", \"title\": \"Create Post\", \"icon\": \"note_add\" },\n\n\n  { \"href\": \"/crud/comments\", \"title\": \"Comments\", \"icon\": \"view_list\" },\n  { \"href\": \"/crud/users\", \"title\": \"Users\", \"icon\": \"people\" },\n  \n  \n  \n  { \"href\": \"/chat\", \"title\": \"Chat\", \"icon\": \"chat\" },\n  {\n    \"title\": \"Pages\",\n    \"icon\": \"domain\",\n    \"items\": [\n      { \"href\": \"/example\", \"title\": \"Example\" },\n      { \"href\": \"/about\", \"title\": \"About\" }\n    ]\n  },\n  { \"href\": \"/settings\", \"title\": \"Settings\", \"icon\": \"settings\" },\n\n  { \"href\": \"/login\", \"icon\": \"lock\", \"title\": \"Logout\" }\n]\n```\n\u003e  No more explaination needed right?\n\n## Routes\n\u003e Part of `src/router.js`\n\n\n\n```javascript\n  // The signature of `route` function :\n  function route(path, file, name, children) {}\n\n  //routes\n  [\n    route('/login', 'Login', 'login'),\n    route('/error', 'Error', 'error'),\n\n    //path, file(*.vue), name, children\n    \n    route('/', 'Main', null, [\n      route('/', 'Home', 'home'),\n      route('/crud/:resource', 'CrudGrid', 'grid'),\n      route('/crud/:resource/:id/edit', 'CrudForm', 'edit'),\n      route('/crud/:resource/create', 'CrudForm', 'create'),\n      route('/crud/:resource/:id/:action', 'CrudForm', 'action'),\n      route('/crud/:resource/:action', 'CrudForm', 'indexAction'),\n      route('/example', 'Example'),\n      route('/settings', 'Settings'),\n      route('/theme', 'Theme'),\n      route('/chat', 'Chat'),\n      route('/about', 'About'),\n    ]),\n    \n\n    // Global redirect for 404\n    { path: '*', redirect: '/error', query: {code: 404, message: 'Page Not Found.'} }\n  ]\n```\n\n## Grid View Config\n\u003e `src/mock/index.js`\n```javascript\nmock.onGet('/types/grid').reply(200, {\n  \"options\": {\n    \"sort\": \"id\", //default sort column\n    \"create\": false, //show Create button\n    \"update\": true, //show update button\n    \"delete\": false //show delete button\n  },\n  \"filters\": {\n    \"model\": {\n      \"name\": \"\",\n      \"created_at\": \"\"\n    },\n    \"fields\": { //filters fields config\n      \"name\": {\n        \"label\": \"Name\"\n      },\n      \"created_at\": {\n        \"label\": \"Created At\",\n        \"type\": \"date\"\n      }\n    },\n    \"rules\": {}\n  },\n  \"columns\": [ //columns config\n    {\n      \"text\": \"Id\", //column header text\n      \"value\": \"id\" //field name\n    },\n    {\n      \"text\": \"Name\",\n      left: true, //make text align left, default is right\n      \"value\": \"name\"\n    }\n  ]\n});\n```\n\n## Grid View Data \n\u003e `src/mock/index.js`\n```javascript\nmock.onGet(/\\/(posts|users|types|comments)$/).reply(({ params = { page: 1, perPage: 10 }, url }) =\u003e {\n  let resource = url.split('/')[1]\n  let offset = (params.page - 1) * params.perPage\n  let models = data[resource]\n  return [200, { //return like this format\n    currentPage: params.page,\n    lastPage: Math.ceil(models.length / params.perPage),\n    perPage: params.perPage,\n    total: data[resource].length,\n    data: models.slice(offset, offset + params.perPage)\n  }]\n});\n```\n\n## Form Builder Config\n\u003e `src/mock/index.js`\n\n```javascript\nmock.onGet('/settings/form').reply(({ params }) =\u003e {\n  return [200, {\n    \"model\": { //form model\n      name: 'Adminify',\n      logo: 'http://placeimg.com/128/128/any',\n      date: null,\n      \n      type: 1,\n      status: 1,\n      \n      tags: [],\n      description: 'An Awesome Site',\n      intro: '',\n    },\n    \"fields\": { //form fields\n      \"name\": {label: 'Name'}, //default type is 'text'\n      \"logo\": {label: 'Logo', type: 'image'}, //working in progress\n      \"date\": {label: 'Created At', type: 'date'},\n      \"type\": {label: 'Type', type: 'select', options: [\n        {text: 'Blog', value: 1},\n        {text: 'Company', value: 2},\n        {text: 'Game', value: 3},\n      ]},\n      \"status\": {label: 'Status', type: 'radios', width: 'md3', options: [\n        {text: 'Enabled', value: 1},\n        {text: 'Disabled', value: 2}\n      ]},\n      \"tags\": {label: 'Tags', type: 'checkboxes', width: 'md3', options: [\n        {text: 'Enabled', value: 1},\n        {text: 'Disabled', value: 2}\n      ]},\n      \"description\": {label: 'Description', type: 'textarea'},\n      \"intro\": {label: 'Intro', type: 'html'},\n    }\n  }]\n})\n```\n\n## Comunication\n### Gitter IM \n[https://gitter.im/vue-adminify/](https://gitter.im/vue-adminify/)\n","funding_links":[],"categories":["awesome-vue [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)","应用实例","Awesome Vue.js [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)"],"sub_categories":["开源","Open Source"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwxs77577%2Fadminify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwxs77577%2Fadminify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwxs77577%2Fadminify/lists"}