forgeIDEA is a web application that helps users generate and manage ideas.
The project is divided into three main components:
- Genkit: The backend service responsible for AI-powered idea generation and processing.
- Socket.io: Handles real-time communication between the frontend and backend.
- Web: The frontend application built with Angular, providing the user interface for interacting with ForgeIDEA.
To get started with ForgeIDEA, refer to the README files within each component's directory:
To run the project using Docker, follow these steps:
-
Rename the Docker Compose template file: Rename
docker-compose_TEMPLATE.yml
todocker-compose.yml
. -
Configure environment variables: Open
docker-compose.yml
and replace the placeholder values for environment variables. This includes API keys (e.g.,GEMINI_API_KEY
,GROQ_API_KEY
), and any other configuration specific to your setup.services: genkit: environment: GEMINI_API_KEY: YOUR_GEMINI_API_KEY # Replace with your actual key GROQ_API_KEY: YOUR_GROQ_API_KEY # Replace with your actual key KEYCIPHER: YOUR_SECRET_KEY # Replace with your secret key # ... other environment variables # ... rest of the file
-
Build and run the services: Open your terminal, navigate to the project's root directory (where
docker-compose.yml
is located), and run the following command:docker-compose up -d
This command will build the Docker images for each service (if they haven't been built yet) and start the containers in detached mode (
-d
). -
Access the application: Once the containers are running, you should be able to access the forgeIDEA web application by navigating to
http://localhost
orhttp://localhost:80
in your web browser. The Genkit API will be available athttp://localhost:4001
and the Socket.io server athttp://localhost:3001
.
We welcome contributions to forgeIDEA! Here's how you can help:
To contribute to forgeIDEA, you'll need to set up the development environment for the specific component(s) you wish to work on (Genkit, Socket.io, or Web).
-
Prerequisites:
- Ensure you have Git installed.
- Ensure you have Node.js and npm installed (for Genkit, Socket.io, and Web).
- Ensure you have Docker and Docker Compose installed if you plan to use them for development or testing.
-
Fork and Clone the Repository:
- Fork the main forgeIDEA repository to your GitHub account.
- Clone your forked repository to your local machine:
git clone https://github.com/YOUR_USERNAME/forgeidea.git cd forgeidea
-
Component-Specific Setup: Detailed instructions for setting up the development environment for each component can be found in their respective README files:
- Genkit: See genkit/README.md.
- Socket.io: See socket.io/README.md.
- Web (Angular): See web/README.md for instructions on setting up the Angular development environment. Typically, this involves navigating to the
web
directory and runningnpm install
.
It's important to run tests to ensure your changes don't break existing functionality.
- Genkit: Instructions for running tests can be found in genkit/README.md.
- Socket.io: Instructions for running tests can be found in socket.io/README.md.
- Web (Angular): Navigate to the
web
directory and runnpm test
to execute unit tests using Karma and Jasmine. For end-to-end tests, refer to the instructions in web/README.md.
Once you've made your changes and ensured all tests pass, you can submit a pull request:
-
Create a New Branch: Create a new branch for your feature or bug fix:
git checkout -b my-feature-branch
-
Commit Your Changes: Make your changes and commit them with clear and concise messages:
git add . git commit -m "feat: Add new feature X" # or "fix: Resolve bug Y" # or "docs: Update Z documentation"
We try to follow Conventional Commits specification.
-
Push to Your Fork: Push your changes to your forked repository:
git push origin my-feature-branch
-
Open a Pull Request: Go to the original forgeIDEA repository on GitHub and open a new pull request from your forked branch to the main development branch of the original repository.
-
Code Review: Your pull request will be reviewed by the maintainers. Be prepared to address any feedback or make further changes.
Thank you for contributing to forgeIDEA!