Nodes is a blogging platform where writers can easily share their ideas, stories, and insights. It includes secure authentication, a straightforward interface, and tools for managing content and users.
Production Environment:
- Authentication System: Secure JWT-based authentication with cookie sessions
- Content Interaction: Reading, commenting, bookmarking, and reactions
- Profile Management: Customizable profiles with follow system
- Theme Personalization: Toggleable light/dark mode preference
- Article Creation: Rich text editing with image upload capabilities
- Publishing Controls: Draft/publish workflow
- Content Moderation: Community-based reporting system
- Engagement Metrics: Track likes, comments, and bookmarks
- Analytics Dashboard: Comprehensive statistics and metrics
- User Management: User oversight with suspension capabilities
- Content Moderation: Post and comment moderation tools
- Featured Content: Curated content promotion system
- Security Controls: Role-based access control (User, Admin, SuperAdmin)
- Node.js v16.0.0 or higher
- PostgreSQL installed and configured
- npm v7.0.0 or higher
# Clone the repository
git clone [email protected]:Etativel/Nodes-Blog.git
# Navigate to server directory
cd Nodes-Blog/backend
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env
# Set up Prisma
npx prisma init
# Make sure to configure your database connection URL in .env
# Run Prisma migrations to set up the database schema
npx prisma migrate dev --name init
# Start development server
npm run dev
# Navigate to client directory
cd ../user-frontend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Start development server
npm run dev
# Navigate to admin directory
cd ../admin-frontend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Start development server
npm run dev
Server Environment Variables:
PORT
: API server port (default: 3000)JWT_SECRET
: Secret key for JWT token signingDATABASE_URL
: PostgreSQL connection stringSESSION_SECRET
: Secret for cookie signingCLOUDINARY_CLOUD_NAME
: Cloudinary account nameCLOUDINARY_API_KEY
: Cloudinary API keyCLOUDINARY_API_SECRET
: Cloudinary API secret
- Mar 2: Project scaffolding & package setup
- Initialized React application and project structure (
react app initialization
) - Added basic routing and API endpoints for posts and comments (
add posts routes
,CRUD for posts
)
- Initialized React application and project structure (
- Mar 3–4: Core data models & controllers
- Implemented CRUD operations for posts, comments, and user entities
- Introduced filtering logic for post feeds
- Mar 12: Image upload & asset management
- Integrated Cloudinary for post images
- Added thumbnail and excerpt fields to posts
- Mar 13–15: Post editing experience
- Enabled write & preview functionality (TinyMCE)
- Responsive image selection and preview improvements
- Mar 16–17: Landing and post pages
- Styled landing page, post page layouts, and reading-time estimates
- Mar 18–20: Authentication & Profile
- Built sign-in/up dialogs, user validation, and session management
- Added profile page, dropdown menu, and image upload for user avatars
- Apr 4–6: Comments & replies
- Implemented comment posting, nesting, editing, and deletion
- Added like/bookmark toggles for posts and comments
- Apr 8–9: Reaction reliability
- Fixed double-click toggle issues and cascade deletion for reactions
- Apr 14–16: Admin interface setup
- Created dashboard panel, user and comment management pages
- Configured Material UI components and Tailwind CSS styling
- Apr 18–21: Security & permissions
- Introduced superadmin/admin/user roles with suspension and activation
- Configured route protection, CORS, rate limiting, and cookie-based auth
- Apr 24: Search and Database query
- Replaced client-side filtering with server-side search using Prisma ORM
- Minor UI refinements for mobile previews and comment styling
- Add user about Editor, implementing tiptap text editor
-
Content tags
Allow users to pick tags for their content. -
Follow Tags/Topics
Instead of only following users, people can follow specific tags or topics. -
User can post images or reels
Allow users to upload and share images, short videos, and reels alongside or instead of blog posts. -
Direct Messaging
Users can privately message each other, with optional group chat functionality. -
Story Feature
Users can post 24-hour disappearing content (photos, text, polls, questions). -
Communities/Groups
Users can create and join communities based on interests (like Reddit subs).
Feel free to submit a Pull Request.
- 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