TechCradle is a powerful, Java-based content management system tailored for a modern blogging experience. Built using the Spring Framework and associated technologies, it offers secure authentication, multilingual support, and seamless blog authoring enriched with generative AI.
- π OTP-based Authentication
- π‘οΈ JWT Token-based Authorization
- π₯ User-based Resource Access (currently disabled)
- π Multilingual Support: English, French, and Dutch
- π Rich Text Editing: Add links, images, and formatted text
- π€ AI-Powered Blog Writing: Integrated with Gemini Flash API for generative writing assistance
- π Full Blog Lifecycle: Create, read, update, and delete blog documents
- π Social Features: Follow and unfollow other users
- Java 17
- Spring Boot
- Spring Security
- JWT (JSON Web Tokens)
- H2 (depending on deployment)
- Gemini Flash API (for AI content generation)
- Java 17+
- Maven 3.6+
- Node.js & npm
- Git
-
Clone the repository:
git clone https://github.com/yourusername/techcradle.git cd techcradle
-
Install dependencies and build the project:
cd SpringBoot mvn clean install
-
Run the application:
mvn spring-boot:run
-
Start the frontend:
cd ../frontend npm install npm start
- Ensure environment variables are properly set for API keys (e.g., Gemini Flash API).
- User role access is a planned feature and is currently disabled.
-
Clone the repository Use
git clone
to clone the repository from GitHub, which includes all the files, branches, and commits.git clone https://github.com/yourusername/repository-name.git
-
Navigate to the SpringBoot project directory From the root of the project,
cd
into theSpringBoot
folder.cd SpringBoot
-
Build the project Use
mvn clean install
to generate the JAR file that contains all the dependencies, classes, etc.mvn clean install
-
Run the application Use
mvn spring-boot:run
to execute the JAR file and host the application at the default port 8080.mvn spring-boot:run
-
Navigate to the frontend project directory From the root of the project,
cd
into thefrontend
directory.cd frontend
-
Run the frontend application Use
npm install
to install the dependencies andnpm start
to run the React-based frontend project.
This project was bootstrapped with Create React App.
In the project directory, you can run:
Runs the app in development mode. Open http://localhost:3000 to view it in the browser.
The page will reload when you make changes. You may also see any lint errors in the console.
Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
Builds the app for production to the build
folder. It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified, and the filenames include hashes. Your app is ready to be deployed!
See the section about deployment for more information.
Note: This is a one-way operation. Once you eject
, you can't go back!
If you aren't satisfied with the build tool and configuration choices, you can eject
at any time. This command will remove the single build dependency from your project. It will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc.) into your project, giving you full control over them. All commands except eject
will still work, but they will point to the copied scripts so you can tweak them. At this point, you're on your own.
You don't have to ever use eject
. The curated feature set is suitable for small and middle deployments.
You can learn more in the Create React App documentation.
To learn React, check out the React documentation.
- Code Splitting
- Analyzing the Bundle Size
- Making a Progressive Web App
- Advanced Configuration
- Deployment
- Troubleshooting - npm run build fails to minify
For further reference, please consider the following sections:
- Official Apache Maven documentation
- Spring Boot Maven Plugin Reference Guide
- Create an OCI image
- Spring Boot Actuator
- Spring Data JPA
- Spring Security
- Validation
- Spring Web
- Java Mail Sender
- Spring Data JDBC
- OAuth2 Resource Server
- Building a RESTful Web Service with Spring Boot Actuator
- Accessing Data with JPA
- Securing a Web Application
- Spring Boot and OAuth2
- Authenticating a User with LDAP
- Validation
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
- Using Spring Data JDBC
Due to Maven's design, elements are inherited from the parent POM to the project POM. To prevent unwanted elements like <license>
and <developers>
from the parent, the project POM contains empty overrides. If you manually switch to a different parent and want the inheritance, remove those overrides.