+ );
+}
\ No newline at end of file
diff --git a/apps/web/src/app/(main)/newsletters/pagetransition.tsx b/apps/web/src/app/(main)/newsletters/pagetransition.tsx
new file mode 100644
index 00000000..6c210cad
--- /dev/null
+++ b/apps/web/src/app/(main)/newsletters/pagetransition.tsx
@@ -0,0 +1,124 @@
+"use client"
+
+import { useEffect, useRef } from "react"
+import { useRouter, usePathname } from "next/navigation"
+import gsap from "gsap"
+
+export default function PageTransition({ children }: { children: React.ReactNode }) {
+ const router = useRouter()
+ const pathname = usePathname()
+
+ const overlayRef = useRef(null)
+ const blocksRef = useRef([])
+ const transitioning = useRef(false)
+
+
+ const createBlocks = () => {
+ const overlay = overlayRef.current
+ if (!overlay) return
+ overlay.innerHTML = ""
+ blocksRef.current = []
+
+ for (let i = 0; i < 12; i++) {
+ const div = document.createElement("div")
+ div.style.flex = "1"
+ div.style.background = "#1e1b4b"
+ div.style.transform = "scaleX(0)"
+ div.style.transformOrigin = "left"
+ overlay.appendChild(div)
+ blocksRef.current.push(div)
+ }
+ }
+
+
+ const cover = (url: string) => {
+ if (transitioning.current) return
+ transitioning.current = true
+
+ gsap.to(blocksRef.current, {
+ scaleX: 1,
+ duration: 0.4,
+ stagger: 0.07,
+ ease: "power2.inOut",
+ onComplete: () => {
+ router.push(url)
+ }
+ })
+ }
+
+
+ const reveal = () => {
+ gsap.set(blocksRef.current, {
+ scaleX: 1,
+ transformOrigin: "right"
+ })
+
+ gsap.to(blocksRef.current, {
+ scaleX: 0,
+ duration: 0.4,
+ stagger: 0.07,
+ ease: "power2.inOut",
+ onComplete: () => {
+ transitioning.current = false
+ }
+ })
+ }
+
+ useEffect(() => {
+ createBlocks()
+ reveal()
+
+ const links = document.querySelectorAll("a[href]")
+ const handleClick = (e: Event) => {
+ const target = e.currentTarget as HTMLAnchorElement
+ const href = target.getAttribute("href")
+
+ // Don't hijack external links, new tabs, or modified clicks
+ if (!href || href.startsWith("#")) {
+ return
+ }
+
+ // Don't hijack external URLs
+ if (href.startsWith("http") || href.startsWith("mailto") || href.startsWith("tel")) {
+ return
+ }
+
+ // Don't hijack links that open in new tab or have external rel
+ if (target.target === "_blank" || target.rel.includes("external")) {
+ return
+ }
+
+ // Don't hijack modified clicks (cmd/ctrl click, middle click, etc.)
+ const mouseEvent = e as MouseEvent
+ if (mouseEvent.metaKey || mouseEvent.ctrlKey || mouseEvent.shiftKey || mouseEvent.button !== 0) {
+ return
+ }
+
+ // Only hijack internal navigation
+ if (href !== pathname) {
+ e.preventDefault()
+ cover(href)
+ }
+ }
+
+ links.forEach((l) => l.addEventListener("click", handleClick))
+ return () => links.forEach((l) => l.removeEventListener("click", handleClick))
+ }, [pathname])
+
+ return (
+ <>
+
+
+ {children}
+ >
+ )
+}
\ No newline at end of file
diff --git a/apps/web/src/app/content/newsletters/getting-started-with-nextjs.md b/apps/web/src/app/content/newsletters/getting-started-with-nextjs.md
new file mode 100644
index 00000000..c415bc25
--- /dev/null
+++ b/apps/web/src/app/content/newsletters/getting-started-with-nextjs.md
@@ -0,0 +1,187 @@
+# Getting Started with Next.js
+
+Next.js is a **powerful React framework** that enables developers to build production-ready web applications with ease. Created by Vercel, it has become one of the most popular choices for modern web development.
+
+## Why Next.js?
+
+Next.js offers several compelling features that make it stand out:
+
+- **Server-Side Rendering (SSR)** - Improve SEO and initial page load performance
+- **File-based routing** - Intuitive routing system based on your file structure
+- **API routes** - Build your backend API within the same project
+- **Automatic code splitting** - Faster page loads with optimized bundles
+- **Built-in CSS support** - Style your apps with CSS Modules, Sass, or Tailwind
+
+## Getting Started
+
+### Installation
+
+First, create a new Next.js application using the official CLI:
+
+```bash
+npx create-next-app@latest my-next-app
+cd my-next-app
+npm run dev
+```
+
+### Project Structure
+
+A typical Next.js project looks like this:
+
+```text
+my-next-app/
+├── app/
+│ ├── layout.tsx
+│ ├── page.tsx
+│ └── globals.css
+├── public/
+│ └── images/
+├── package.json
+└── next.config.js
+```
+
+## Core Concepts
+
+### 1. Pages and Routing
+
+Next.js uses a file-system based router. Simply create a file in the `app` directory:
+
+```typescript
+// app/about/page.tsx
+export default function About() {
+ return
About Page
+}
+```
+
+This automatically creates a route at `/about`.
+
+
+### 3. Server vs Client Components
+
+**Server Components** (default):
+- Fetch data on the server
+- Keep sensitive data secure
+- Reduce client-side JavaScript
+
+**Client Components** (with `'use client'`):
+- Add interactivity
+- Use React hooks
+- Access browser APIs
+
+## Advanced Features
+
+### Image Optimization
+
+Next.js provides the `Image` component for automatic image optimization:
+
+```jsx
+import Image from 'next/image'
+
+export default function Profile() {
+ return (
+
+ )
+}
+```
+
+### Metadata and SEO
+
+Enhance your SEO with built-in metadata support:
+
+```typescript
+export const metadata = {
+ title: 'My Next.js App',
+ description: 'A powerful web application',
+ openGraph: {
+ title: 'My Next.js App',
+ description: 'A powerful web application',
+ images: ['/og-image.jpg'],
+ },
+}
+```
+
+## Performance Tips
+
+> **Pro Tip**: Next.js automatically optimizes your application, but here are some best practices:
+
+1. **Use the `Image` component** - Automatic lazy loading and optimization
+2. **Implement dynamic imports** - Load components only when needed
+3. **Leverage caching** - Use appropriate cache strategies
+4. **Monitor Core Web Vitals** - Keep an eye on performance metrics
+
+## Deployment
+
+Deploying to Vercel is incredibly simple:
+
+1. Push your code to GitHub
+2. Import your repository on [Vercel](https://vercel.com)
+3. Deploy with zero configuration
+
+### Environment Variables
+
+Create a `.env.local` file for local development:
+
+```bash
+DATABASE_URL=postgresql://localhost:5432/mydb
+API_KEY=your_secret_key
+NEXT_PUBLIC_API_URL=https://api.example.com
+```
+
+> **Note**: Variables prefixed with `NEXT_PUBLIC_` are exposed to the browser.
+
+## Common Patterns
+
+### Loading States
+
+```typescript
+export default function Loading() {
+ return
+ )
+}
+```
+
+## Resources
+
+- [Official Documentation](https://nextjs.org/docs)
+- [Next.js GitHub Repository](https://github.com/vercel/next.js)
+- [Learn Next.js Interactive Course](https://nextjs.org/learn)
+- [Next.js Examples](https://github.com/vercel/next.js/tree/canary/examples)
+
+---
+
+## Conclusion
+
+Next.js combines the best of React with powerful features for production applications. Whether you're building a simple blog or a complex web application, Next.js provides the tools and performance optimizations you need.
+
+**Ready to start building?** Install Next.js today and experience the future of web development!
+
+---
+
+*Last updated: November 2025*
+*Written by: Harsh*
\ No newline at end of file
diff --git a/apps/web/src/app/content/newsletters/mastering-react-hooks.md b/apps/web/src/app/content/newsletters/mastering-react-hooks.md
new file mode 100644
index 00000000..4177dec1
--- /dev/null
+++ b/apps/web/src/app/content/newsletters/mastering-react-hooks.md
@@ -0,0 +1,796 @@
+# Mastering React Hooks
+
+React Hooks revolutionized the way we write React components by allowing us to **use state and other React features in functional components**. Introduced in React 16.8, Hooks have become the standard way to build React applications.
+
+## Why React Hooks?
+
+Hooks solve several problems that existed with class components:
+
+- **Reusable stateful logic** - Share logic between components without HOCs or render props
+- **Simpler code** - No need for class syntax, `this` keyword, or lifecycle methods
+- **Better code organization** - Group related logic together instead of splitting across lifecycle methods
+- **Smaller bundle size** - Functional components are more lightweight
+- **Easier testing** - Pure functions are simpler to test
+
+## The Rules of Hooks
+
+> **Critical**: Always follow these two rules when using Hooks!
+
+1. **Only call Hooks at the top level** - Don't call Hooks inside loops, conditions, or nested functions
+2. **Only call Hooks from React functions** - Call them from functional components or custom Hooks
+
+```typescript
+// ❌ Bad - Hook inside condition
+function BadComponent() {
+ if (condition) {
+ const [state, setState] = useState(0); // Wrong!
+ }
+}
+
+// ✅ Good - Hook at top level
+function GoodComponent() {
+ const [state, setState] = useState(0);
+
+ if (condition) {
+ // Use the state here
+ }
+}
+```
+
+## Essential Hooks
+
+### useState
+
+The most commonly used Hook for managing component state:
+
+```typescript
+import { useState } from 'react';
+
+function Counter() {
+ const [count, setCount] = useState(0);
+ const [name, setName] = useState("Alice");
+
+ // With objects
+ const [user, setUser] = useState({
+ name: "Bob",
+ age: 30
+ });
+
+ const incrementCount = () => {
+ setCount(count + 1);
+ // Or use functional update for correct async behavior
+ setCount(prev => prev + 1);
+ };
+
+ const updateUser = () => {
+ setUser(prev => ({
+ ...prev,
+ age: prev.age + 1
+ }));
+ };
+
+ return (
+
+
Count: {count}
+
+
+ );
+}
+```
+
+### useEffect
+
+Handle side effects like data fetching, subscriptions, or DOM manipulation:
+
+```typescript
+import { useState, useEffect } from 'react';
+
+function UserProfile({ userId }: { userId: string }) {
+ const [user, setUser] = useState(null);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ // This runs after every render (without dependency array)
+ console.log('Component rendered');
+ });
+
+ useEffect(() => {
+ // This runs only once (empty dependency array)
+ console.log('Component mounted');
+
+ return () => {
+ // Cleanup function runs on unmount
+ console.log('Component unmounted');
+ };
+ }, []);
+
+ useEffect(() => {
+ // This runs when userId changes
+ setLoading(true);
+
+ fetch(`/api/users/${userId}`)
+ .then(res => res.json())
+ .then(data => {
+ setUser(data);
+ setLoading(false);
+ });
+
+ // Cleanup: cancel requests on userId change
+ return () => {
+ // Cancel fetch request
+ };
+ }, [userId]);
+
+ if (loading) return
- {/* Profile Card Dropdown */}
+
{!isCollapsed && open && (
-
- {/* User Info Section */}
-
- {fullName}
-
+ {fullName}{userEmail}
- {/* Menu Items */}
+
);
-}
+}
\ No newline at end of file
diff --git a/apps/web/src/components/non-pro-news/News.tsx b/apps/web/src/components/non-pro-news/News.tsx
new file mode 100644
index 00000000..eab950f5
--- /dev/null
+++ b/apps/web/src/components/non-pro-news/News.tsx
@@ -0,0 +1,42 @@
+import { Terminal } from "lucide-react";
+import PrimaryButton from "../ui/custom-button";
+import Link from "next/link";
+
+export default function News() {
+ return (
+
+
+
+
+
+
+
+
+ Stay Ahead in Open
+
+
+ Source—with Opensox
+
+
+
+ {/* Subheading */}
+
+
+ Curated insights, repo recommendations, industry news and developer tools.
+
+
+ No spam. Just high-quality updates that save you hours.
+