A flexible and modular Vue.js framework for building micro-frontend applications with TypeScript support. This framework enables you to create scalable applications by dynamically importing independent features as needed.
- 🎯 Dynamic micro-frontend loading
- 🔒 Type-safe with full TypeScript support
- 🎨 Customizable theming
- 📦 Pre-built modular components
- 🛠️ CLI tools for project management
- 🔌 Easy-to-use plugin system
- 📱 Responsive design ready
# Create a new project
npx @arrkid/vue-wrapper create my-app
# Navigate to project directory
cd my-app
# Start development server
npm run dev
Currently, the framework includes two pre-built features:
A simple counter component demonstrating state management and event handling.
npx vue-wrapper import featureA
A fully functional todo list with add, remove, and toggle capabilities.
npx vue-wrapper import featureB
<template>
<FrameworkWrapper :config="config">
<template #header>
<nav>
<!-- Your navigation -->
</nav>
</template>
<router-view></router-view>
<template #footer>
<footer>
<!-- Your footer -->
</footer>
</template>
</FrameworkWrapper>
</template>
<script setup lang="ts">
import { FrameworkWrapper } from '@yourusername/vue-wrapper-framework';
const config = {
features: ['featureA', 'featureB'],
theme: {
primary: '#42b883',
secondary: '#35495e'
}
};
</script>
The framework accepts a configuration object with the following options:
interface WrapperConfig {
// List of features to load
features?: string[];
// Theme configuration
theme?: {
primary: string;
secondary: string;
};
}
- Create a new feature module:
import type { FeatureModule } from '@yourusername/vue-wrapper-framework';
const myFeature: FeatureModule = {
name: 'myFeature',
component: MyComponent,
routes: [
{
path: '/my-feature',
component: MyComponent
}
],
async setup() {
// Initialization logic
}
};
export default myFeature;
- Register your feature in the wrapper configuration:
const config = {
features: ['myFeature'],
// ... other config options
};
# Create a new project
npx vue-wrapper create my-app
# Import features
npx vue-wrapper import featureA featureB
# Add a new feature (scaffolding)
npx vue-wrapper generate feature my-feature
my-app/
├── src/
│ ├── components/
│ │ └── FrameworkWrapper.vue
│ ├── features/
│ │ ├── featureA/
│ │ └── featureB/
│ ├── core/
│ │ ├── createApp.ts
│ │ ├── featureLoader.ts
│ │ └── store.ts
│ └── types/
│ └── index.ts
├── package.json
└── vite.config.ts
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run tests
npm test
-
Feature Independence: Each feature should be self-contained with its own components, styles, and logic.
-
Type Safety: Always use TypeScript interfaces and types for component props and state.
-
Error Handling: Implement error boundaries and loading states for feature imports.
-
Performance: Use lazy loading for features that aren't immediately needed.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, please:
- Check the documentation
- Open an issue
- Submit a feature request
- Contribute to the project
- Vue.js team for the amazing framework
- All contributors who have helped shape this project
- The Vue community for inspiration and support
[Your Name]
- GitHub: @eliemugenzi
- npm: @eliemugenzi