Flux is your one-stop RSS feed aggregator, bringing the latest updates from your favorite blogs, news sites, and online publications straight to your fingertips. With a sleek UI and robust backend powered by Go and PostgreSQL, Flux ensures you never miss a beat in the digital world. 🌐
- Dynamic Feed Management: Add, remove, and manage your feeds effortlessly. Stay updated with what matters to you.
- Secure API Access: Enjoy robust authentication using API keys stored securely with cookies. 🔒
- Streamlined Login: Simple yet effective authentication flow to keep your data protected.
- Mobile-Responsive UI: A modern interface crafted with Tailwind CSS for an exceptional user experience across devices.
- Personalized Updates: Aggregate feeds tailored to your interests, presented in a neat, chronological format.
- Powerful Backend: Built with Go for speed and scalability, Flux ensures lightning-fast performance. ⚡
- RESTful APIs: Interact programmatically with your feeds using well-structured API endpoints.
Experience Flux in action at: Flux RSS Aggregator
- Register an account to get started.
- Add as many feed URLs as you like.
- Browse available feeds added by other users and follow them.
- Enjoy browsing posts from the feeds you follow! 🚀
- Frontend: React, Tailwind CSS
- Backend: Go with
sqlc
andgoose
for PostgreSQL database management - Database: PostgreSQL
- Authentication:
bcrypt
, cookies, and API key-based security - Libraries:
js-cookie
for cookie management 🍪lucide-react
for beautifully simple icons 🎨react-router-dom
for seamless navigation 🌐
Flux is fully Dockerized for ease of deployment and development.
- The backend resides in the
Flux_backend
directory, with aDockerfile
for building its container. - The frontend resides in the
Flux_frontend
directory, also with its ownDockerfile
. - A
docker-compose.yml
file is present at the root of the project to orchestrate the services.
- Ensure Docker and Docker Compose are installed on your system.
- From the project root, run:
docker-compose up --build
- Access the application at
http://localhost:5173
.
Follow these steps to launch Flux on your machine:
git clone https://github.com/MustafaAmer-1/Flux.git
cd Fluc
-
Install Go: Download here.
-
Install PostgreSQL: Get started.
-
Configure your environment variables:
PORT
DB_URL
-
Run migrations with
goose
:go install github.com/pressly/goose/v3/cmd/goose@latest goose -dir=Flux_backend/sql/schema postgres $DB_URL up
-
Run the backend server:
cd Flux_backend go mod download go mod vendor go build -o Flux && ./Flux
- Install Node.js and npm: Node.js Official Website.
- Navigate to the frontend directory and install dependencies:
cd Flux_frontend npm install
- Optinal: set backend base url: If you deployed the backend on another machine you can set it's base url as environment variable
REACT_APP_BACKEND_URL
export REACT_APP_BACKEND_URL=https://somedomain.com/v1/
- Start the development server:
npm run dev
- Sign Up or Log In to start your personalized feed journey.
- Add your favorite RSS feeds using their URLs.
- Let Flux aggregate, sort, and display all the latest posts for you.
- Passwords are hashed with
bcrypt
before being stored in the database. - API keys are stored in secure, HTTP-only cookies with
sameSite: strict
. - Authorization headers ensure secure access to your feeds.
We welcome contributions from the community!
- Fork the repo.
- Create your feature branch:
git checkout -b feature/amazing-feature
- Commit your changes:
git commit -m 'Add some amazing feature'
- Push your branch:
git push origin feature/amazing-feature
- Open a Pull Request!
This project is licensed under the MIT License. See the LICENSE file for details.
- Add dark mode for better night-time browsing. 🌙
- Include social media feed integration.
- Offline mode to read feeds on the go. 🚉
🌟 Flux: Aggregating the world for you. 🌟