This monorepo is a comprehensive development workspace that includes multiple applications, libraries, and tools. It provides a flexible and scalable approach to managing different projects and standalone applications.
oss/
├── apps/
│ ├── next-hello/ # Main Next.js web application integrated into the monorepo
│ └── web-e2e/ # End-to-end tests for the web application
├── apps-standalone/ # Apps that are hard/not yet integrated to the monorepo
│ ├── ayokoding-web/ # Standalone version of the web application
│ ├── wahidyankf-e2e/ # End-to-end testing environment
│ └── wahidyankf-web/ # Personal web application
├── libs/ # Shared libraries and components
│ └── ... # Reusable code and shared utilities
├── scripts/ # Utility scripts for project management
└── tools/ # Development and build tools
next-hello
: The primary web application integrated into the monorepoweb-e2e
: End-to-end testing suite for the web application
The apps-standalone
folder is used for applications that are:
- Difficult to integrate into the monorepo
- Experimental projects
- Not yet ready for full monorepo integration
- Maintained separately from the main monorepo workflow
Current standalone applications:
ayokoding-web
: Standalone version of the web applicationwahidyankf-e2e
: End-to-end testing environmentwahidyankf-web
: Personal web application
Shared libraries and components that can be used across different applications in the monorepo.
- Framework: Next.js
- Monorepo Management: Nx
- Language: TypeScript
- Styling: Tailwind CSS
- Python Formatting: Black
- Node Version Management: nvm (via .nvmrc)
- Testing:
- Unit Testing: Jest
- E2E Testing: Playwright
- Code Formatting: Prettier
- Git Hooks: Husky
- Node.js (version 20.x or later)
- npm (version 9.x or later)
- Nx CLI
-
Clone the repository
git clone https://github.com/wahidyankf/ayokoding.git cd ayokoding
-
Install dependencies
npm install
-
Start the main application:
npx nx serve next-hello
-
Build for production:
npx nx build next-hello
-
Start the standalone web application:
npm run ayokoding-web:dev
-
Build standalone web application:
npm run ayokoding-web:build
-
Run all tests (including standalone and monorepo applications):
npm run test:all
-
Run standalone application tests:
npm run test:all:standalone
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
The project uses Husky for Git hooks with automated setup:
npm run prepare
Hooks include:
pre-commit
: Runs lint-staged (Prettier for JS/TS, Black for Python)commit-msg
: Validates commit messagespre-push
: Runs tests and builds affected projects
The prepare script ensures all hooks are executable.
The project includes automated checks to ensure proper setup:
npm run doctor
Checks:
- Required tools (nvm, black)
- Node version matches .nvmrc
Automatically runs during npm install
to verify:
- Correct Node version
- Required tools are installed
Distributed under the MIT License. See LICENSE
for more information.
Wahid Yankfi - [Your Email or Social Media]
Project Link: https://github.com/wahidyankf/oss