A full-stack news application built with the MERN stack (MongoDB Express React Node.js). Features real-time news fetching from the GNews API AI-powered article summarization via Google's Gemini and secure user authentication with JWT. Users can browse search and save AI-generated summaries to their personal dashboard.
https://dm-newsdash.netlify.app/
Here're some of the project's best features:
- Live News Feed: The app fetches and displays up-to-the-minute news articles from a live global news API (GNews).
- Dynamic Content Filtering: Users can instantly filter the news feed by clicking on various categories like "Business" "Technology" or "Sports."
- Keyword Search: A fully functional search bar allows users to find articles on any topic they choose.
- Trending News Section: A dedicated "Trending" tab shows the most important breaking headlines.
- Interactive Article Cards: A clean grid-based layout of news articles that are interactive on hover.
- Detailed Article View: Clicking an article opens a modal with more details including a description and a direct link to the original source.
1. Clone the repository:
git clone https://github.com/D-Majumder/News-Dash
2. Set up the Backend:
- Navigate to the /server directory.
- Follow the instructions in the server/README.md file to install dependencies, set up your .env file with your secret keys, and start the server.
3. Set up the Frontend:
- Navigate to the /client directory.
- Install dependencies: npm install
- Start the React application: npm start
The frontend will open at http://localhost:3000 and will automatically connect to your local backend server running on port 5000.
4. Environment Variables:
-The backend requires a .env file in the /server directory. Create this file by copying the .env.example file and filling in your secret keys.
/*/.env
# Get your key from [https://gnews.io/](https://gnews.io/)
GNEWS_API_KEY=PASTE_YOUR_GNEWS_API_KEY_HERE
# Get your key from [https://ai.google.dev/](https://ai.google.dev/)
GEMINI_API_KEY=PASTE_YOUR_GEMINI_API_KEY_HERE
# Get your connection string from MongoDB Atlas
MONGO_URI=PASTE_YOUR_MONGODB_CONNECTION_STRING_HERE
# Make up any random, secret phrase for signing JWTs
JWT_SECRET=YOUR_RANDOM_SECRET_STRING_GOES_HERE
Technologies used in the project:
- React
- Tailwind CSS
- Node.js
- Express.js
- Axios
- MongoDB
- Mongoose
- JSON Web Tokens
- bcrypt.js
- dotenv
- Google Gemini API
- GNews API
- Netlify
- Render
- Git & GitHub
This project is licensed under the GNU