SpreadIt is a dynamic social news aggregation platform powered by robust backend technologies and a user-friendly interface. It employs modern web development frameworks and scalable architecture to enable seamless content submission, sharing, and voting across various formats (articles, images, videos).
MIT License
(UPDATE) - with the latest dependencies updates, you will have to do some small config changes.
Welcome to SpreadIt, a cutting-edge social news aggregation platform that seamlessly blends cutting-edge backend technologies with a user-friendly interface to revolutionize the way you consume and share news. Powered by a robust stack of modern web development frameworks, including TypeScript, React, Next.js, and PostgreSQL, SpreadIt offers a scalable and efficient infrastructure for facilitating seamless content submission, sharing, and voting across various formats, including articles, images, and videos.
SpreadIt is designed to offer users a smooth experience for discovering, sharing, and engaging with diverse content types. It facilitates content submission, voting, and sharing through an intuitive and responsive interface. The platform aims to foster a vibrant community-driven ecosystem.
Sign In Sign Up Feed Create Community Create Post Rich Text Editor Single Post View Reply Post Settings Search Dropdown Navigation
SpreadIt's robust technological stack ensures the platform's scalability, reliability, and efficiency:
TypeScript: We leverage TypeScript for its type safety, enabling robust code development and preventing runtime errors.
React: Utilizing React, we create interactive and dynamic user interfaces that enhance the user experience.
Next.js: Next.js powers the server-side rendering capabilities of SpreadIt, optimizing performance and enhancing SEO.
PostgreSQL: PostgreSQL serves as our relational database, providing a powerful and reliable foundation for managing content and user data.
Supabase: Supabase acts as our backend infrastructure, simplifying database management and authentication processes.
Redis: Redis, deployed on Upstash, handles caching and data retrieval, ensuring rapid content delivery and improved user experience.
Tanstack/react-query: react-query enables efficient data fetching and caching, ensuring smooth user interactions.
Infinite scroll: Infinite scroll provides a continuous and seamless user experience, allowing you to browse endless content without page reloads.
Optimistic updates: Optimistic updates deliver real-time feedback to users, keeping them informed of content changes and interactions.
Prisma: Prisma simplifies data access and management, providing an abstraction layer for interacting with the database.
NextAuth: NextAuth handles user authentication, ensuring secure and seamless user logins and registrations.
OAuth2: OAuth2 enables authentication with various social media platforms, providing users with convenient sign-in options.
Axios: Axios facilitates HTTP requests, enabling communication with external APIs.
Zod: Zod provides type validation for API requests and responses, ensuring data integrity.
UploadThing: UploadThing streamlines file uploading, making it easy for users to share multimedia content.
TailwindCSS: TailwindCSS powers our responsive and stylish user interface, enhancing visual appeal and user experience.
Shadcn-ui: Shadcn-ui provides a collection of React components for building modern and accessible user interfaces.
BlockNote: BlockNote enables users to create and edit rich text content, facilitating engaging and informative posts.
To run SpreadIt locally, follow these steps:
npm install
npm run dev
http://localhost:3000
Once the application is running locally, access it through the browser and explore its features. You can submit content, vote, share, and experience the seamless user interface.
SpreadIt requires the following environment variables to be set. Create a .env
file in the root directory and add the following variables:
DATABASE_URL=
NEXTAUTH_SECRET=
NEXTAUTH_URL=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
REDIS_URL=
REDIS_SECRET=
Note: The
DATABASE_URL
variable should be set to the URL of your PostgreSQL database. TheNEXTAUTH_SECRET
variable should be set to the Auth secret as a string. TheNEXTAUTH_URL
variable should be set to the URL of your application. TheGOOGLE_CLIENT_ID
andGOOGLE_CLIENT_SECRET
variables should be set to the client ID and client secret of your Google OAuth2 application. TheUPLOADTHING_SECRET
variable should be set to the Uploadthing Api Secret as a string. TheUPLOADTHING_APP_ID
variable should be set to the ID of your UploadThing application. TheREDIS_URL
variable should be set to the URL of your Redis database. TheREDIS_SECRET
variable should be set to Redis Api Secret as a string.
Make sure to provide the appropriate values for each variable.
Contributions are welcome! If you'd like to contribute to SpreadIt, please fork the repository, create a new branch, make your changes, and submit a pull request. Be sure to follow the contribution guidelines.
This project is licensed under the MIT License.