A stunning retro CRT-styled blog application with the MERN stack (MongoDB, Express, React, Node.js). Features a vintage terminal aesthetic with scanlines, flicker effects, and paper-like light mode design.
- Retro CRT Interface: Authentic terminal aesthetics with scanline effects, screen flicker, and VT323 monospace font
- Boot Sequence: Nostalgic OS loader animation on startup
- Micro-Posts: Twitter-style short posts for quick thoughts
- Long-Form Articles: Full article creation and reading system
- Real-time Updates: Seamless API integration with MongoDB
- Responsive Design: Works beautifully on desktop and mobile
- Node.js (v18 or higher)
- MongoDB (local or MongoDB Atlas account)
- npm or yarn
-
Clone the repository
cd /home/kayden/Downloads/code/fullStack/blogSite -
Set up the Backend
cd server npm install -
Configure MongoDB
Edit
server/.env.exampleand add your MongoDB connection string:MONGODB_URI=your_mongodb_connection_string_here PORT=5000 NODE_ENV=development
Then rename
.env.exampleto.env(or copy it):cp .env.example .env # Edit .env with your actual MongoDB URI -
Set up the Frontend
cd ../client npm install
-
Start the Backend Server (in
server/directory):npm run dev
Server will run on
http://localhost:5000 -
Start the Frontend (in
client/directory, in a new terminal):npm run dev
App will run on
http://localhost:5173 -
Open your browser and navigate to
http://localhost:5173
blogSite/
├── client/ # Vite + React frontend
│ ├── src/
│ │ ├── api/ # API client functions
│ │ │ └── client.ts # REST API calls
│ │ ├── App.tsx # Main application component
│ │ ├── main.tsx # React entry point
│ │ └── index.css # Global styles
│ ├── index.html # HTML template
│ ├── package.json
│ └── vite.config.ts
│
├── server/ # Express + Node.js backend
│ ├── src/
│ │ ├── models/ # MongoDB schemas
│ │ │ ├── Post.ts
│ │ │ └── Article.ts
│ │ ├── routes/ # API routes
│ │ │ ├── posts.ts
│ │ │ └── articles.ts
│ │ └── index.ts # Server entry point
│ ├── .env # Environment variables (create from .env.example)
│ ├── package.json
│ └── tsconfig.json
│
└── .gitignore
GET /api/posts- Fetch all micro-postsPOST /api/posts- Create a new post{ "content": "Your post content here" }
GET /api/articles- Fetch all articlesPOST /api/articles- Create a new article{ "title": "Article Title", "content": "Article content..." }
This application embraces a "paper and ink" aesthetic with a retro CRT twist:
- Light Mode Terminal: Near-black text on paper-white background
- Subtle Effects: Light scanlines and flicker for authenticity
- Clean Typography: VT323 monospace font for terminal feel
- Micro-animations: Hover effects and smooth transitions
- Brutalist UI: Bold borders, strong shadows, and clear hierarchy
Frontend:
- React 18 with TypeScript
- Vite for blazing-fast development
- Lucide React for icons
- Custom CSS for retro effects
Backend:
- Node.js with Express
- TypeScript
- MongoDB with Mongoose
- CORS enabled for development
- Navigate to
/MICRO_LOGStab - Type your message in the input field
- Click "SEND"
- Your post appears instantly
- Switch to
/ARTICLEStab - Click "+ CREATE_FILE"
- Enter title and content
- Click "SAVE_TO_DISK"
- Article is saved and appears in the directory
- In
/ARTICLEStab, click any article - Navigate with "< BACK_TO_ROOT" button
Built by mohan as a retro-styled blogging platform.
ISC
Made with ❤️ and nostalgia for the terminal era