.github/ 0000775 0000000 0000000 00000000000 15177273154 0012432 5 ustar 00root root 0000000 0000000 .github/workflows/ 0000775 0000000 0000000 00000000000 15177273154 0014467 5 ustar 00root root 0000000 0000000 .github/workflows/build.yml 0000664 0000000 0000000 00000001132 15177273154 0016306 0 ustar 00root root 0000000 0000000 name: build
on:
schedule:
- cron: '0 0 1 * *'
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: ['lts/*']
steps:
- uses: actions/checkout@v5
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- run: npm i -g grunt-cli
- run: yarn install
- run: grunt
.gitignore 0000664 0000000 0000000 00000000516 15177273154 0013064 0 ustar 00root root 0000000 0000000 /build
/node_modules
/*.log
/*.iws
.idea/workspace.xml
.idea/tasks.xml
.idea/profiles_settings.xml
.idea/inspectionProfiles/Project_Default.xml
.idea/inspectionProfiles/profiles_settings.xml
node_modules/.yarn-integrity
/.angular/**/*.*
/dist
/dist-react
/dist-vue
/dist-svelte
/out-tsc
.DS_Store
/test-results
/tests/screenshots .npmignore 0000664 0000000 0000000 00000000574 15177273154 0013077 0 ustar 00root root 0000000 0000000 /.angular
/.babelrc
/.github
/.idea
/.vscode
/.travis.yml
/.scrutinizer.yml
/AGENTS.*
/agents
/artifacts
/build
/corifeus-boot.json
/coverage
/Gruntfile.js
/node_modules
/playwright-report
/playwright*.*
/secure
/test
/test-results
/tests
/tsconfig.json
/*.iml
/*.ipr
/*.iws
/*.lock
*.log
npm-debug.log*
yarn-*.log*
/scripts
secure/
agents/
.claude/
/.angular/**/*.*
/src/**/*.* Gruntfile.js 0000664 0000000 0000000 00000003632 15177273154 0013373 0 ustar 00root root 0000000 0000000 const utils = require('corifeus-utils');
module.exports = (grunt) => {
const builder = require(`corifeus-builder`);
const gruntUtil = builder.utils;
const loader = new builder.loader(grunt);
loader.js({
});
grunt.registerTask('default', ['cory-npm', 'clean', 'cory-replace', 'cory:license', 'publish']);
grunt.registerTask('build', ['publish']);
grunt.registerTask('publish', async function() {
const done = this.async()
const cwd = process.cwd()
try {
// Build Angular (ng build) and React (vite) in parallel
await Promise.all([
// Angular → dist/
gruntUtil.spawn({
grunt: grunt,
gruntThis: this,
}, {
cmd: `${cwd}/node_modules/.bin/ng${gruntUtil.commandAddon}`,
args: [
'build',
]
}),
// React → dist-react/
gruntUtil.spawn({
grunt: grunt,
gruntThis: this,
}, {
cmd: `${cwd}/node_modules/.bin/vite${gruntUtil.commandAddon}`,
args: [
'build',
'--config',
'./src/react/vite.config.ts',
]
}),
// Vue → dist-vue/
gruntUtil.spawn({
grunt: grunt,
gruntThis: this,
}, {
cmd: `${cwd}/node_modules/.bin/vite${gruntUtil.commandAddon}`,
args: [
'build',
'--config',
'./src/vue/vite.config.ts',
]
}),
])
done()
} catch(e) {
done(e)
}
})
}
LICENSE 0000664 0000000 0000000 00000002013 15177273154 0012073 0 ustar 00root root 0000000 0000000 MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. README.md 0000664 0000000 0000000 00000031520 15177273154 0012352 0 ustar 00root root 0000000 0000000 # This is a development package
For the full-blown package, please follow:
https://github.com/patrikx3/redis-ui
https://www.npmjs.com/package/p3x-redis-ui
https://corifeus.com/redis-ui
[//]: #@corifeus-header
[](https://www.npmjs.com/package/p3x-redis-ui-material) [](https://paypal.me/patrikx3) [](https://www.patrikx3.com/en/front/contact) [](https://www.facebook.com/corifeus.software) [](https://network.corifeus.com/status/31ad7a5c194347c33e5445dbaf8)
---
# 💿 P3X Redis UI triple frontend — Angular + React/MUI + Vue/Vuetify with 54 languages, 7 themes, Socket.IO, desktop notifications, and full feature parity v2026.4.441
🌌 **Bugs are evident™ - MATRIX️**
🚧 **This project is under active development!**
📢 **We welcome your feedback and contributions.**
### NodeJS LTS is supported
### 🛠️ Built on NodeJs version
```txt
v24.14.1
```
# 📦 Built on Angular
```text
21.2.8
```
# 📝 Description
[//]: #@corifeus-header:end
The `p3x-redis-ui-material` package is the **triple frontend** for [p3x-redis-ui](https://github.com/patrikx3/redis-ui). It provides three fully independent, feature-parity GUIs that connect to `p3x-redis-ui-server` via Socket.IO:
### Angular Frontend (`/ng/`)
- **Angular** (latest LTS) with standalone components and Angular Signals
- **Angular Material** component library
- **Webpack** bundler with AOT compilation via `@ngtools/webpack`
- **CDK virtual scrolling** for tree view performance
### React Frontend (`/react/`)
- **React** (latest LTS) with functional components and hooks
- **MUI (Material UI)** component library matching Angular Material's look and feel
- **Vite** bundler — instant dev server startup and fast production builds
- **Zustand** lightweight state management replacing Angular services
- **@tanstack/react-virtual** for virtual scrolling
### Vue Frontend (`/vue/`)
- **Vue 3** with Composition API and `