58 | {toPascalCase(title)} 59 |
60 | 61 | 62 |65 | {metaData || 66 | "Don't miss out on reading this amazing blog at @MegaBlog!"} 67 |
68 | 69 |├── assets ├── image ├── GSSoC-Ext.png └── hacktoberfest.png ├── src ├── assets │ ├── favicon.png │ └── contactPageBg.jpg ├── lib │ └── utils.ts ├── componenets │ ├── SparkelIcons.jsx │ ├── container │ │ └── Container.jsx │ ├── Logo.jsx │ ├── Button.jsx │ ├── AiChatbot.jsx │ ├── index.js │ ├── Select.jsx │ ├── Input.jsx │ ├── TrendingTopicHomePage.jsx │ ├── AuthLayout.jsx │ ├── Header │ │ └── LogoutBtn.jsx │ ├── RTE.jsx │ ├── ForgotPasswordModal.jsx │ ├── SearchBar.jsx │ ├── PostCard.jsx │ ├── Login.jsx │ ├── Signup.jsx │ └── GoogleTranslator.jsx ├── store │ ├── store.js │ └── authSlice.js ├── pages │ ├── Signup.jsx │ ├── Login.jsx │ ├── AddPost.jsx │ ├── Error404.jsx │ ├── Home.jsx │ ├── Features.jsx │ ├── Feedback.css │ ├── EditPost.jsx │ ├── FAQ.jsx │ ├── SupportPage.jsx │ ├── Category.jsx │ ├── ContactUsBG.jsx │ ├── Presskit.css │ ├── FeedBackPage.jsx │ ├── AllPost.jsx │ └── Presskit.jsx ├── config │ └── config.js ├── api │ └── chatbot.js ├── components │ └── ui │ │ ├── label.tsx │ │ ├── textarea.tsx │ │ ├── badge.tsx │ │ ├── Chatbot.jsx │ │ ├── popover.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── accordion.tsx │ │ ├── BackToTopButton.tsx │ │ ├── dialog.tsx │ │ ├── alert-dialog.tsx │ │ ├── command.tsx │ │ ├── navigation-menu.tsx │ │ └── select.tsx ├── utils │ └── ai.js ├── App.jsx ├── index.css ├── appwrite │ └── auth.js └── App.css ├── postcss.config.js ├── server ├── .env.example ├── routes │ ├── feedbackRoute.js │ ├── contactRoute.js │ ├── storiesRoutes.js │ ├── newsletterRoute.js │ └── discussionRoutes.js ├── models │ ├── postModel.js │ ├── discussion.js │ ├── Newsletter.js │ ├── contact.js │ └── feedback.js ├── utils │ └── db.js ├── package.json ├── controller │ ├── postsController.js │ ├── newsletterController.js │ ├── feedbackController.js │ ├── contactController.js │ └── discussionController.js ├── app.js ├── generateFromAi.py ├── sendSuscribedMail.js └── sendContactDetailsToAdmin.js ├── vite.config.js ├── .env.sample ├── .gitignore ├── components.json ├── index.html ├── .eslintrc.cjs ├── .github ├── workflows │ ├── greetings.yml │ └── update-readme.yml └── scripts │ └── update_structure.py ├── public ├── service-worker.js └── offline.html ├── tsconfig.json ├── package.json ├── repo_structure.txt ├── PROJECT_STRUCTURE.md ├── tailwind.config.js ├── README.md ├── env.md └── CODE_OF_CONDUCT.md /assets/image: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/GSSoC-Ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuj123upadhyay/MegaBlog/HEAD/assets/GSSoC-Ext.png -------------------------------------------------------------------------------- /assets/hacktoberfest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuj123upadhyay/MegaBlog/HEAD/assets/hacktoberfest.png -------------------------------------------------------------------------------- /src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuj123upadhyay/MegaBlog/HEAD/src/assets/favicon.png -------------------------------------------------------------------------------- /src/assets/contactPageBg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anuj123upadhyay/MegaBlog/HEAD/src/assets/contactPageBg.jpg -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /server/.env.example: -------------------------------------------------------------------------------- 1 | MONGO_URI=mongodb://localhost:27017/megaBlog 2 | JWT_SECRET=scijyasfy7dsvegdffvbfbfgg435tgrsnbgfgn 3 | PORT=5000 4 | EMAIL_ID= 5 | PASS_KEY= 6 | ADMIN_EMAIL_ID= -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /src/componenets/SparkelIcons.jsx: -------------------------------------------------------------------------------- 1 | // src/components/SparklesIcon.jsx 2 | import React from "react"; 3 | 4 | const SparkelIcons = () => { 5 | return ✨; // Or your icon design 6 | }; 7 | 8 | export default SparkelIcons; 9 | -------------------------------------------------------------------------------- /src/componenets/container/Container.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | function Container({children}) { 4 | return ( 5 |
26 | The page you are looking for is not available! 27 |
28 | 29 | 32 | Home 33 | 34 |16 | Uncover unique topics and spark creativity for your blog with these hand-picked ideas. 17 |
18 | 19 | {/* Button to navigate to /gen-topic */} 20 |{error}
} 29 | {success &&{success}
} 30 | 50 | 53 |31 | Hi ${userdata.name}, 32 |
33 |34 | Thank you for subscribing to MegaBlog! You’re now part of a community that receives the latest news, articles, and updates directly in your inbox. We’re excited to have you with us! 35 |
36 |37 | Stay tuned for our upcoming content, and feel free to explore our latest posts at any time! 38 |
39 |
40 | Best Regards,
41 | The MegaBlog Team
42 |
66 | {feature.description} 67 |
68 |65 | {metaData || 66 | "Don't miss out on reading this amazing blog at @MegaBlog!"} 67 |
68 | 69 |Frequently Asked Questions
52 |53 | Thank you for visiting our website! We are here to help answer your queries. 54 |
55 |58 | We're here to assist you with any questions or concerns you 59 | may have. Explore the options below, or reach out to us directly. 60 |
61 |{description}
109 || 35 | Field 36 | | 37 |38 | Value 39 | | 40 |
|---|---|
| Name | 45 |${userdata.name} | 46 |
| Phone | 49 |${userdata.phone} | 50 |
| ${userdata.email} | 54 ||
| Message | 57 |${userdata.message} | 58 |
| Submitted At | 61 |${new Date(userdata.createdAt).toLocaleString()} | 62 |
| A coding period from October 1st to October 30th, inviting contributions and offering a rewarding experience. |
9 | | Hacktoberfest 2024 |
| Hacktoberfest celebrates open-source, welcoming participants of all levels throughout October. |
10 |
11 |
12 |
13 | ## 📊 Project Metrics
14 |
15 | | 🌟 Stars | 19 |🍴 Forks | 20 |🐛 Issues | 21 |🔔 Open PRs | 22 |🔕 Closed PRs | 23 |
37 |
38 |
39 | **MegaBlog** is a dynamic, responsive platform for sharing your thoughts and ideas. Built with **React** and **Node.js**, it allows users to write, manage, and comment on blog posts effortlessly.
40 |
41 | - 🔗 **Check out the project:** [MegaBlog GitHub Repository](https://github.com/anuj123upadhyay/MegaBlog)
42 | - 🌐 **Live Website**: [MegaBlog Live](mega-blog-8587.vercel.app/)
43 |
44 | ## ✨ Project Structure
45 |
46 | Check the project structure here [Project Structure](PROJECT_STRUCTURE.md)
47 |
48 | ## 🌟 Features
49 |
50 | - 🖊️ **Create & Edit** your personal blog posts
51 | - 🔑 **JWT Authentication** for secure login
52 | - 🗂️ **Categorize** posts for easy navigation
53 | - 💬 **Comment** and engage with other users
54 | - 🔍 **Search** to quickly find posts
55 |
56 | ## 🛠️ Tech Stack
57 |
58 | - **Frontend**: React
59 | - **Backend**: Node.js, Express
60 | - **Database**: MongoDB
61 | - **Authentication**: JWT
62 |
63 | ## 🚀 Getting Started
64 |
65 | 1. Clone the repository:
66 | ```bash
67 | git clone https://github.com/anuj123upadhyay/MegaBlog.git
68 | ```
69 |
70 | 2. Install dependencies:
71 |
72 | ```bash
73 | npm install
74 | ```
75 |
76 | 3. Set up environment variables in the `.env` file for MongoDB URI, JWT secret, etc.
77 |
78 | 4. Start the application:
79 |
80 | ```bash
81 | npm run dev
82 | ```
83 |
84 | 5. Visit `http://localhost:3000` to explore!
85 |
86 | ## 🤝 Contributing
87 | Want to contribute? Follow these steps:
88 |
89 | 1. Fork the repo
90 | 2. Create a branch (`git checkout -b feature-branch`)
91 | 3. Commit your changes (`git commit -m 'Add a new feature'`)
92 | 4. Push to your branch (`git push origin feature-branch`)
93 | 5. Open a Pull Request
94 |
95 | ## 📜 License
96 | This project is licensed under the MIT License.
97 |
98 | ### ⭐ Like this project? Star it on GitHub to show your support!
99 |
--------------------------------------------------------------------------------
/src/components/ui/dialog.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import * as DialogPrimitive from "@radix-ui/react-dialog"
3 | import { Cross2Icon } from "@radix-ui/react-icons"
4 |
5 | import { cn } from "../../lib/utils"
6 |
7 | const Dialog = DialogPrimitive.Root
8 |
9 | const DialogTrigger = DialogPrimitive.Trigger
10 |
11 | const DialogPortal = DialogPrimitive.Portal
12 |
13 | const DialogClose = DialogPrimitive.Close
14 |
15 | const DialogOverlay = React.forwardRef<
16 | React.ElementRefNothing Found!
95 |96 | This category does not have any blogs currently. 97 |
98 |53 | Don't have any account? 54 | 58 | Sign Up 59 | 60 |
61 | {error &&{error}
} 62 | 129 |67 | Already have an account? 68 | 72 | Sign In 73 | 74 |
75 | {error &&{error}
} 76 | 77 | 161 |Don't worry! You can still access previously loaded content. We'll automatically reconnect when your internet connection is restored.
171 | 179 |63 | Have a look at our Blog Posts. 64 |
65 |No posts available at the moment.
158 | )} 159 |29 | Download our brand assets such as logos, fonts, and official imagery. 30 | These can be used for media coverage and press mentions. 31 |
32 |44 | Stay updated with our latest announcements and news. Click below to 45 | read or download our press releases. 46 |
47 |76 | Company founded and launched the first product. 77 |
78 |82 | Reached 1 million users across 100+ countries. 83 |
84 |88 | Received the prestigious XYZ Innovation Award. 89 |
90 |Users worldwide
101 |Countries served
105 |Industry awards
109 |118 |121 |"This is the most innovative product we've seen in years!"
119 | 120 |
122 |125 |"An industry game-changer, with outstanding leadership!"
123 | 124 |
137 | We specialize in innovative tech solutions that transform 138 | industries. 139 |
140 |146 | You can reach our media team at{" "} 147 | press@Megablog.com. 148 |
149 |