Skip to content

Ionia-Devs/chameleon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chameleon - README

Crafted with Nx: a smart, fast, and extensible build system.

Welcome to the chameleon project, a full-stack application that embodies adaptability and modern web development practices.

Getting Started 🚀

This section will guide you through setting up your local development environment for chameleon.

Prerequisites

Before you begin, ensure that you have the following installed:

✅ Node.js (v18.19.0)

Cloning the Repository

To start contributing to chameleon, clone the repository using the following command:

git clone https://github.com/Ionia-Devs/chameleon.git

Once cloned, navigate to the chameleon directory:

cd chameleon

Environment Setup 🌐

  1. Create an .env file from the .env.example template:

    cp .env.example .env
  2. Fill in the .env file with the necessary environment variables provided by your teammate.

Installing pnpm 📥

pnpm is our package manager of choice. To install pnpm, use one of the following methods:

  • With Homebrew:

    brew install pnpm
  • With npm:

    npm install -g pnpm

After installing pnpm, install the project dependencies:

pnpm i

Nx Console Plugin 🖥️

Leverage the Nx Console VSCode Extension for a GUI that aids in command execution and component generation.

Running the Application 🏃‍♂️

Using Nx Console

Locate and execute the dev command within the chameleon workspace commands.

NX Console

Using the Command Line

Alternatively, you can start the application with:

pnpm exec nx run chameleon:dev

Access Points 🌐

  • Frontend: http://localhost:3000
  • Backend: http://localhost:9991/graphql

Automated Database Deployment

Overview

Our project leverages GitHub Actions for seamless database schema changes integration and deployment, utilizing IssueOps commands for efficient management with PlanetScale.

Commands

  • /ps-create: Creates a new database branch and deploy request for schema changes.
  • /ps-update: Updates the schema on an existing database branch.
  • /ps-merge: Merges approved schema changes into the main database branch.
  • /ps-approve: Approves a deploy request for merging schema changes.
  • /ps-delete: Deletes a database branch.
  • /ps-attach: Associates a specific deploy request or database branch with the current GitHub branch.

Development Tools and Resources 🧰

Branching and Pull Requests

We use feature branches for development:

  1. Create a new branch for your feature or fix. The branch name should start with the number of the ticket you are working on, followed by a descriptive name in kebab-case. For example, 32-example-branch-name.
  2. Make your changes and commit them with clear messages.
  3. Push your branch to the main repository.
  4. Open a pull request (PR) against the main branch in the GitHub repository.

For a step-by-step guide, GitHub's documentation on creating a pull request from a branch is a great resource.

Branch Naming Restrictions

Avoid underscores (_) in branch names, as PlanetScale does not allow them. Use hyphens (-) instead.

Example

  • Good: feature-add-new-table
  • Bad: feature_add_new_table

Linking Pull Requests to Issues

For enhanced project tracking, ensure you link your pull requests to their corresponding issues:

  1. Reference the issue in your pull request description using keywords like closes, fixes, or resolves followed by the issue number.
  2. Use the sidebar in the pull request or issue to manually link to the relevant issue under the 'Development' section.
  3. Check your work: When the PR is merged, the linked issues will close automatically, indicating the associated tasks are completed.

For more on linking PRs to issues, visit the GitHub Guide.

GitHub Projects Board

Stay updated with our progress and keep track of tasks on our GitHub Projects Board.

Production Environments 🌍

Support

If you encounter issues, please file a ticket in the issue tracker or contact one of the project maintainers.

Stay Connected 🌟

Join the conversation and follow along with project updates in the discord!