{"id":15162107,"url":"https://github.com/sconz2/frontforge","last_synced_at":"2026-02-04T13:43:24.289Z","repository":{"id":253945228,"uuid":"845014549","full_name":"sconz2/frontforge","owner":"sconz2","description":"A frontend dev environment.","archived":false,"fork":false,"pushed_at":"2024-08-21T10:37:07.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T00:41:29.478Z","etag":null,"topics":["front-end-development","frontend","linux","nodejs","react","svelte","ubuntu","vagrant","vue"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sconz2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-20T12:17:32.000Z","updated_at":"2024-08-21T10:37:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a7a736c-144e-43d5-8297-0edf26bf714a","html_url":"https://github.com/sconz2/frontforge","commit_stats":null,"previous_names":["sconz2/frontforge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sconz2/frontforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sconz2%2Ffrontforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sconz2%2Ffrontforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sconz2%2Ffrontforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sconz2%2Ffrontforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sconz2","download_url":"https://codeload.github.com/sconz2/frontforge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sconz2%2Ffrontforge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265414588,"owners_count":23761027,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["front-end-development","frontend","linux","nodejs","react","svelte","ubuntu","vagrant","vue"],"created_at":"2024-09-27T01:05:51.109Z","updated_at":"2026-02-04T13:43:24.252Z","avatar_url":"https://github.com/sconz2.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FrontForge\n\nFrontForge is a frontend development environment designed to simplify the lives of frontend developers. It provides a comprehensive platform with all the essential tools required for local development of Node.js applications.\n\n## Features\n\n- **Vagrant-Powered**: FrontForge leverages Vagrant to create a consistent and reproducible development environment across different machines.\n- **Ubuntu 22.04**: A lightweight and reliable operating system ensures stability and performance.\n- **Pre-installed Tools**:\n  - **nvm**: Node Version Manager, allowing easy management of multiple Node.js versions.\n  - **Node.js**: JavaScript runtime built on Chrome's V8 JavaScript engine.\n  - **npm**: Package manager for Node.js, facilitating the installation of project dependencies.\n  - **nginx**: High-performance web server and reverse proxy.\n  - **tmux**: Terminal multiplexer for managing multiple terminal sessions.\n\n## Installation \u0026 Setup\n\n### Prerequisites\n\nBefore setting up FrontForge, ensure you have the following installed on your local machine:\n\n- **Vagrant**: Version 2.4 (Note: FrontForge has not been tested with versions higher than 2.4, so it may or may not work with them.)\n- **VirtualBox**: Version 6.1 (Note: FrontForge has not been tested with versions higher than 6.1, so it may or may not work with them.)\n\n### Clone the Repository\n\nTo get started with FrontForge, clone the repository to your local machine:\n\n```bash\ngit clone https://github.com/sconz2/frontforge.git\n```\n\n### Copy Example File\n\nAfter cloning the repository, you need to copy the example configuration file and rename it:\n\n```bash\ncp FrontForge.json.example FrontForge.json\n```\n\n## Configuration\n\n### FrontForge.json File\n\nThe `FrontForge.json` file is used to configure various aspects of the Vagrant VM. Below is a breakdown of each section and its purpose.\n\n#### VM Section\n\nThis section provides Vagrant with the resources to allocate to the VM.\n\n- **`ip`**: The VM's IP address.\n- **`memory`**: The amount of RAM allocated to the VM (in MB).\n- **`cpus`**: The number of CPUs allocated to the VM.\n- **`provider`**: The VM provider. By default, this is set to `virtualbox` as other providers are not currently supported.\n\nExample:\n\n```json\n\"vm\": {\n    \"ip\": \"192.168.56.57\",\n    \"memory\": 1028,\n    \"cpus\": 2,\n    \"provider\": \"virtualbox\"\n}\n```\n\n#### Folders Section\n\nThis section defines a list of shared folders between the host and the VM.\n\nEach folder object contains:\n- **`map`**: The folder path on the host machine.\n- **`to`**: The folder path on the VM.\n\nExample:\n\n```json\n\"folders\": [\n    {\n        \"map\": \"{host project folder}\",\n        \"to\": \"{vm project folder}\"\n    }\n]\n```\n\n#### Sites Section\n\nThis section specifies all the sites that Vagrant should set up.\n\nEach site object contains:\n- **`map`**: The local URL of your app.\n- **`to`**: The folder on the VM that the site should be linked to.\n- **`proxy`**: An object containing the `host` and `port` of the Node.js app.\n\nExample:\n\n```json\n\"sites\": [\n    {\n        \"map\": \"{url}\",\n        \"to\": \"{vm project folder}\",\n        \"proxy\": {\n            \"host\": \"127.0.0.1\",\n            \"port\": 5000\n        }\n    }\n]\n```\n\n#### Ports Section\n\nThis section defines any ports that need to be forwarded.\n\nEach port object contains:\n- **`send`**: The port on the host machine.\n- **`to`**: The port on the VM.\n\nExample:\n\n```json\n\"ports\": [\n    {\n        \"send\": 33060,\n        \"to\": 3360\n    }\n]\n```\n\n### Hosts File\n\nTo ensure that the local URLs defined in the `sites` section of your `FrontForge.json` file correctly map to the VM's IP address, you'll need to edit the hosts file on your host machine.\n\n#### Steps to Edit the Hosts File\n\n1. **Open the Hosts File**:\n   - **Windows**: \n     - Open Notepad as an administrator (search for Notepad in the Start menu, right-click it, and select **Run as administrator**).\n     - Go to **File** \u003e **Open** and navigate to `C:\\Windows\\System32\\drivers\\etc`.\n     - Select **All Files** from the file type dropdown and open the `hosts` file.\n   - **macOS / Linux**:\n     - Open a terminal and use a text editor with superuser privileges to edit the hosts file. For example:\n       ```bash\n       sudo nano /etc/hosts\n       ```\n\n2. **Add Entries for Your Sites**:\n   - Add entries to the hosts file that map the local URLs (defined in the `map` field of your `sites` section) to the VM's IP address.\n   - The format for each entry should be:\n     ```\n     \u003cVM_IP\u003e \u003clocal_URL\u003e\n     ```\n   - For example, if your `FrontForge.json` specifies the following site configuration:\n     ```json\n     \"sites\": [\n         {\n             \"map\": \"myapp.local\",\n             \"to\": \"/var/www/myapp\",\n             \"proxy\": {\n                 \"host\": \"127.0.0.1\",\n                 \"port\": 5000\n             }\n         }\n     ]\n     ```\n   - You would add the following line to your hosts file:\n     ```\n     192.168.56.57 myapp.local\n     ```\n\n3. **Save the Hosts File**:\n   - After adding the necessary entries, save the hosts file and close the text editor.\n\nBy updating the hosts file, you ensure that your local development URLs resolve correctly to the VM, enabling seamless access to your sites.\n\n\n\n## Usage\n\nOnce the `FrontForge.json` file is configured, you can start the development environment by running:\n\n```bash\nvagrant up\n```\n\nThis command will boot the VM and provision it based on the settings defined in your FrontForge.json file. The initial setup may take a few minutes, depending on the resources allocated to the VM. After the initial provisioning, starting and stopping the VM will be quick and efficient.\n\nOnce Vagrant has finished provisioning the VM, you can view your Node.js app by navigating to the local URL specified in the sites section of your FrontForge.json file. Simply enter the URL into your web browser, and you should see your app displayed.\n\nNote: Ensure you have updated your hosts file to map the local URL to the VM's IP address for proper resolution. See the 'Hosts File' section above.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.\n\n## Acknowledgements\n\nFrontForge is largely inspired by and based on [Laravel Homestead](https://github.com/laravel/homestead). We extend our gratitude to the Laravel team for their incredible work and the inspiration behind FrontForge.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsconz2%2Ffrontforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsconz2%2Ffrontforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsconz2%2Ffrontforge/lists"}