Social platform - Securely share content and connect with others around the world: 🍾 Live Site
| Username | Password |
|---|---|
| close | @loveclose1 |
- In-Place Profile Editing: Allows users to update and edit profile information (profile img, bio, username, links etc.) in place, removing the need for an additional edit profile page.
- Share: Securely share content (photo/video) with optional captions by taking a photo or selecting photos from your device.
- Enhanced Search: Users can search for friends and others through the find tab, Utilizing SQL close returns all usernames related to the input and refines results to match the specification of the input.
- Home: Displays all followed users posts in a chronological feed
- Comments,Likes,Shares: Users can comment, like and share other users posts
- Conversations: Direct Message between users (coming soon)
This is a monorepo containing two main applications:
-
Client: A React application located in the
/clientdirectory.- Integrates Redux and Protected Routes to provide a personalized user experience and context management.
- Uses Formik and Yup for Form validation.
- Integrates React-Easy-Edit to support in-place profile updates (picture,bio,username etc.)
-
Server: A Spring Boot application located in the
/serverdirectory.- Provides APIs for user authentication, user management, content management, etc.
- Integrates with AWS services like S3 and Elastic Transcoder for scalable storage, secure photo/video uploading, and content distribution.
- Configured with Spring Email to automate email verification during user registration.
- Configured with Spring Security for auth-based access control (JWT), to secure API endpoints, and encryption of passwords.
- CORS has also been configured to enable secure communication between the frontend and backend.
-
Client
- React
- TypeScript
- Axios
- Redux/React Router
- Material UI/React-Emotion/Styled Components
- React-Easy-Edit
- Formik/Yup
-
Server
- Java 18, Spring Boot 3.x, Spring Security, Spring Email
- Maven, Hibernate/JPA
- PostgreSQL, Docker
- AWS S3, Elastic Transcoder, CloudFront
- Postman
Ensure you have the following installed:
- Java 18+ for the Spring Boot server
- Node.js 14+ and npm for the React client
- Maven 3.x or Gradle (if using Gradle to build the server)
- PostgreSQL or another database for the backend (configured in application.properties)
- Docker (optional, for containerized deployment)
- AWS Account with access to S3 and CloudFront (if using AWS services)
- [Any other tools] (e.g., Kubernetes)
-
Clone the repository:
git clone https://github.com/dj-io/close.git cd your-monorepo -
Install client Dependencies: Navigate to the
clientdirectory and install dependenciescd client npm install -
Install Server Dependencies: Navigate to the
serverdirectory and install dependencies.cd ../server mvn installor, if using Gradle:
./gradlew build
-
Start the Server: In the
serverdirectory, start the Spring Boot servermvn spring-boot:runor, if using Gradle:
./gradlew bootRun
-
Start the Client: Open a new terminal, navigate to the
clientdirectory, and start the React app.cd ../client npm start
-
Client: Add a .env file in the client directory to configure the environment variables.
REACT_APP_API_URL=http://localhost:8080/api
-
Server: Configure
application.propertiesin theserver/src/main/resourcesdirectory.server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase spring.datasource.username=yourusername spring.datasource.password=yourpassword