31 |
32 | );
33 | }
34 |
--------------------------------------------------------------------------------
/public/images/viande.png:
--------------------------------------------------------------------------------
1 |
2 |
3 | ERROR: The request could not be satisfied
4 |
5 |
502 ERROR
6 |
The request could not be satisfied.
7 |
8 | CloudFront attempted to establish a connection with the origin, but either the attempt failed or the origin closed the connection.
9 | We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.
10 |
11 | If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.
12 |
13 |
14 |
165 | );
166 | }
167 |
--------------------------------------------------------------------------------
/data/workflows.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Store,
3 | Instagram,
4 | Facebook,
5 | BarChart3,
6 | Truck,
7 | ShoppingBag,
8 | Mail,
9 | Bot,
10 | MessageSquare,
11 | Youtube,
12 | FileImage,
13 | Clock,
14 | FileText,
15 | Rss,
16 | } from "lucide-react";
17 |
18 | export const workflows = [
19 | {
20 | name: "Instagram Post Generator",
21 | description: "Generate and publish an Instagram post with a script",
22 | nodes: [
23 | { id: "1", type: "imageUploader", data: { label: "Upload Image" } },
24 | { id: "2", type: "textInput", data: { label: "Enter Prompt" } },
25 | { id: "3", type: "scheduler", data: { label: "Set Schedule" } },
26 | { id: "4", type: "scriptGenerator", data: { label: "Generate Script" } },
27 | {
28 | id: "5",
29 | type: "instagramPublisher",
30 | data: { label: "Publish to Instagram" },
31 | },
32 | ],
33 | edges: [
34 | { id: "e1-2", source: "1", target: "4" },
35 | { id: "e2-4", source: "2", target: "4" },
36 | { id: "e3-5", source: "3", target: "5" },
37 | { id: "e4-5", source: "4", target: "5" },
38 | ],
39 | },
40 | ];
41 |
42 | export const nodeTypesData = [
43 | {
44 | name: "Generate Text",
45 | description: "Generate text based on the prompt",
46 | logo: "/assets/logos/image-generator.png",
47 | type: "textInput",
48 | icon: FileText,
49 | },
50 | {
51 | name: "text input",
52 | description: "Generate text based on the prompt",
53 | logo: "/assets/logos/image-generator.png",
54 | type: "textInput",
55 | icon: FileText,
56 | },
57 | {
58 | name: "Image Uploader",
59 | description: "Upload files to the server",
60 | logo: "/assets/logos/file-uploader.png",
61 | type: "fileUploader",
62 | icon: FileImage,
63 | },
64 | {
65 | name: "Describe Image",
66 | description: "Describe the image given as input",
67 | logo: "/assets/logos/image-generator.png",
68 | type: "classic",
69 | icon: FileImage,
70 | },
71 | {
72 | name: "Instagram",
73 | description: "Publish and manage Instagram content",
74 | logo: "/assets/logos/instagram.png",
75 | type: "instagram",
76 | icon: Instagram,
77 | },
78 | {
79 | name: "YouTube",
80 | description: "Manage YouTube videos and channels",
81 | logo: "/assets/logos/youtube.png",
82 | type: "youtube",
83 | icon: Youtube,
84 | },
85 | {
86 | name: "Facebook",
87 | description: "Interact with Facebook pages and ads",
88 | logo: "/assets/logos/facebook.png",
89 | type: "facebook",
90 | icon: Facebook,
91 | },
92 | {
93 | name: "Shopify",
94 | description: "Integrate with Shopify e-commerce platform",
95 | logo: "/assets/logos/shopify.png",
96 | type: "shopify",
97 | icon: Store,
98 | },
99 | {
100 | name: "TikTok",
101 | description: "Create and manage TikTok content",
102 | logo: "/assets/logos/tiktok.png",
103 | type: "tiktok",
104 | icon: FileImage,
105 | },
106 | {
107 | name: "Image Generator",
108 | description: "Generate images based on prompts",
109 | logo: "/assets/logos/image-generator.png",
110 | type: "imageGenerator",
111 | icon: FileImage,
112 | },
113 | {
114 | name: "Email Sender",
115 | description: "Send emails through google mail",
116 | logo: "/assets/logos/gmail.png",
117 | type: "email",
118 | icon: Mail,
119 | },
120 | {
121 | name: "Text to Text Description",
122 | description: "Convert text input to detailed description",
123 | logo: "/assets/logos/text-description.png",
124 | type: "textDescription",
125 | icon: FileText,
126 | },
127 | {
128 | name: "Google Sheets",
129 | description: "Interact with Google Sheets",
130 | logo: "/assets/logos/google-sheets.png",
131 | type: "googleSheets",
132 | icon: FileText,
133 | },
134 | {
135 | name: "Scheduler",
136 | description: "Schedule tasks and workflows",
137 | logo: "/assets/logos/scheduler.png",
138 | type: "scheduler",
139 | icon: Clock,
140 | },
141 | {
142 | name: "Meta Analyse",
143 | description: "Analyze Meta (Facebook) data and insights",
144 | logo: "/assets/logos/meta-analyse.png",
145 | type: "metaAnalyse",
146 | icon: BarChart3,
147 | },
148 | {
149 | name: "Maestro Delivery",
150 | description: "Manage deliveries through Maestro",
151 | logo: "/assets/logos/maestro-delivery.png",
152 | type: "maestroDelivery",
153 | icon: Truck,
154 | },
155 | {
156 | name: "Yalidine",
157 | description: "Integrate with Yalidine shipping services",
158 | logo: "/assets/logos/yalidine.png",
159 | type: "yalidine",
160 | icon: ShoppingBag,
161 | },
162 | {
163 | name: "ChatGPT",
164 | description: "Integrate ChatGPT for AI-powered conversations",
165 | logo: "/assets/logos/chatgpt.png",
166 | type: "chatgpt",
167 | icon: Bot,
168 | },
169 | {
170 | name: "Messages",
171 | description: "Manage and send messages across platforms",
172 | logo: "/assets/logos/messages.png",
173 | type: "messages",
174 | icon: MessageSquare,
175 | },
176 | {
177 | name: "RSS Feed",
178 | description: "Fetch and process RSS feeds",
179 | logo: "/assets/logos/rss.png",
180 | type: "rssFeed",
181 | icon: Rss,
182 | },
183 | {
184 | name: "Social Media Scheduler",
185 | description: "Schedule posts across multiple social media platforms",
186 | logo: "/assets/logos/social-scheduler.png",
187 | type: "socialScheduler",
188 | icon: Clock,
189 | },
190 | {
191 | name: "Content Aggregator",
192 | description: "Aggregate content from various sources",
193 | logo: "/assets/logos/content-aggregator.png",
194 | type: "contentAggregator",
195 | icon: FileText,
196 | },
197 | ];
198 |
--------------------------------------------------------------------------------
/components/ui/select.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 |
3 | import * as React from "react"
4 | import * as SelectPrimitive from "@radix-ui/react-select"
5 | import { Check, ChevronDown, ChevronUp } from "lucide-react"
6 |
7 | import { cn } from "@/lib/utils"
8 |
9 | const Select = SelectPrimitive.Root
10 |
11 | const SelectGroup = SelectPrimitive.Group
12 |
13 | const SelectValue = SelectPrimitive.Value
14 |
15 | const SelectTrigger = React.forwardRef<
16 | React.ElementRef,
17 | React.ComponentPropsWithoutRef
18 | >(({ className, children, ...props }, ref) => (
19 | span]:line-clamp-1",
23 | className
24 | )}
25 | {...props}
26 | >
27 | {children}
28 |
29 |
30 |
31 |
32 | ))
33 | SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
34 |
35 | const SelectScrollUpButton = React.forwardRef<
36 | React.ElementRef,
37 | React.ComponentPropsWithoutRef
38 | >(({ className, ...props }, ref) => (
39 |
47 |
48 |
49 | ))
50 | SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
51 |
52 | const SelectScrollDownButton = React.forwardRef<
53 | React.ElementRef,
54 | React.ComponentPropsWithoutRef
55 | >(({ className, ...props }, ref) => (
56 |
64 |
65 |
66 | ))
67 | SelectScrollDownButton.displayName =
68 | SelectPrimitive.ScrollDownButton.displayName
69 |
70 | const SelectContent = React.forwardRef<
71 | React.ElementRef,
72 | React.ComponentPropsWithoutRef
73 | >(({ className, children, position = "popper", ...props }, ref) => (
74 |
75 |
86 |
87 |
94 | {children}
95 |
96 |
97 |
98 |
99 | ))
100 | SelectContent.displayName = SelectPrimitive.Content.displayName
101 |
102 | const SelectLabel = React.forwardRef<
103 | React.ElementRef,
104 | React.ComponentPropsWithoutRef
105 | >(({ className, ...props }, ref) => (
106 |
111 | ))
112 | SelectLabel.displayName = SelectPrimitive.Label.displayName
113 |
114 | const SelectItem = React.forwardRef<
115 | React.ElementRef,
116 | React.ComponentPropsWithoutRef
117 | >(({ className, children, ...props }, ref) => (
118 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | {children}
133 |
134 | ))
135 | SelectItem.displayName = SelectPrimitive.Item.displayName
136 |
137 | const SelectSeparator = React.forwardRef<
138 | React.ElementRef,
139 | React.ComponentPropsWithoutRef
140 | >(({ className, ...props }, ref) => (
141 |
146 | ))
147 | SelectSeparator.displayName = SelectPrimitive.Separator.displayName
148 |
149 | export {
150 | Select,
151 | SelectGroup,
152 | SelectValue,
153 | SelectTrigger,
154 | SelectContent,
155 | SelectLabel,
156 | SelectItem,
157 | SelectSeparator,
158 | SelectScrollUpButton,
159 | SelectScrollDownButton,
160 | }
161 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | # or
14 | bun dev
15 | ```
16 |
17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18 |
19 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20 |
21 | This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
22 |
23 | ## Learn More
24 |
25 | To learn more about Next.js, take a look at the following resources:
26 |
27 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29 |
30 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
31 |
32 | ## Deploy on Vercel
33 |
34 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
35 |
36 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
37 |
38 | # MyWkfl 🚀
39 |
40 | **Empowering Businesses with Seamless Workflow Automation**
41 |
42 | MyWkfl is a cutting-edge platform designed to streamline workflows and automate repetitive tasks, helping businesses enhance their efficiency and productivity. Whether it's managing social media posts, sending emails, generating product descriptions, or executing scheduled tasks, MyWkfl simplifies it all! 🌟
43 |
44 | ---
45 |
46 | ## 🌟 Features
47 |
48 | ### 🔧 Core Components
49 |
50 | 1. **Image Upload**
51 | Easily upload images to integrate into your workflow tasks. Perfect for managing product visuals or social media assets.
52 |
53 | 2. **Image-to-Text Models**
54 | Extract text from uploaded images using advanced AI models, enabling smarter workflows and streamlined content creation.
55 |
56 | 3. **Description Generator**
57 | Automatically generate high-quality, engaging descriptions for your products, social posts, or any other content needs.
58 |
59 | 4. **Task Scheduler**
60 | Schedule tasks to execute later, ensuring your workflow runs smoothly even when you're away.
61 |
62 | 5. **Email Automation**
63 | Create, customize, and send automated emails directly from your workflow.
64 |
65 | 6. **Extensive Plugin Support**
66 | A growing library of plugins to integrate with popular tools like Instagram, email services, and more!
67 |
68 | ---
69 |
70 | ## ⚙️ Technology Stack
71 |
72 | MyWkfl is built with the latest and greatest technologies to deliver a robust and seamless experience:
73 |
74 | - **Next.js 15 (App Router)**: A modern framework for building fast and scalable web applications.
75 | - **React-Flow**: To power the dynamic and intuitive flow-based interfaces.
76 | - **ShadCN**: For generating beautiful and consistent user interfaces.
77 |
78 | ---
79 |
80 | ## 🚀 How It Works
81 |
82 | 1. **Visual Workflow Builder**: Use the React-Flow-powered interface to create and customize your workflows visually.
83 | 2. **Add Plugins**: Enhance your workflows with plugins like Instagram integration, email automation, and more.
84 | 3. **Execute Tasks**: Run tasks immediately or schedule them for later with the Task Scheduler.
85 | 4. **Monitor & Optimize**: Track performance and improve workflows based on insights.
86 |
87 | ---
88 |
89 | ## 🎯 Use Cases
90 |
91 | - **Social Media Management**: Automate post creation and scheduling with Instagram integration.
92 | - **E-Commerce**: Upload product images, generate descriptions, and send marketing emails.
93 | - **Content Creation**: Quickly generate text for blogs, ads, or product pages.
94 | - **Business Productivity**: Simplify repetitive tasks to focus on what matters.
95 |
96 | ---
97 |
98 | ## 📸 Screenshots
99 |
100 | _We are constantly improving and will soon add screenshots to showcase the platform in action!_
101 |
102 | ---
103 |
104 | ## ⚙️ Installation
105 |
106 | Follow these steps to get started with MyWkfl:
107 |
108 | 1. Clone the repository:
109 | ```bash
110 | git clone https://github.com/ramzy1453/my-wkfl-devfest-batna-2k24.git
111 | ```
112 | 2. Navigate to the project directory:
113 | ```bash
114 | cd MyWkfl
115 | ```
116 | 3. Install dependencies:
117 | ```bash
118 | npm install
119 | ```
120 | 4. Start the development server:
121 | ```bash
122 | npm run dev
123 | ```
124 | 5. Open your browser and navigate to `http://localhost:3000`.
125 |
126 | ---
127 |
128 | ## 🤝 Contributing
129 |
130 | We welcome contributions! Here's how you can help:
131 |
132 | 1. Fork the repository.
133 | 2. Create a new branch:
134 | ```bash
135 | git checkout -b feature/your-feature-name
136 | ```
137 | 3. Commit your changes:
138 | ```bash
139 | git commit -m "Add your feature description"
140 | ```
141 | 4. Push to the branch:
142 | ```bash
143 | git push origin feature/your-feature-name
144 | ```
145 | 5. Open a pull request.
146 |
147 | ---
148 |
149 | ## 🌟 Meet the Authors
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 | ---
166 |
167 | ## 📄 License
168 |
169 | This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
170 |
171 | ---
172 |
173 | ## 💬 Feedback & Support
174 |
175 | We’d love to hear your feedback! If you encounter any issues or have suggestions, feel free to [open an issue](https://github.com/ramzy1453/MyWkfl/issues).
176 |
177 | Let’s transform workflows together! 🚀
178 |
--------------------------------------------------------------------------------