Skip to content

Commit

Permalink
make it pretty
Browse files Browse the repository at this point in the history
  • Loading branch information
vygandas committed Nov 3, 2023
1 parent a76b163 commit 6d3539b
Show file tree
Hide file tree
Showing 68 changed files with 7,466 additions and 2,792 deletions.
11 changes: 10 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
node_modules
/node_modules
/dist
/docker
/docs
/.git
/.idea
/.nx
/.pnpm-store
/.vscode
/coverage
44 changes: 9 additions & 35 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
{
"root": true,
"ignorePatterns": [
"**/*"
],
"plugins": [
"@nx"
],
"ignorePatterns": ["**/*"],
"plugins": ["@nx"],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {
"@nx/enforce-module-boundaries": [
"error",
Expand All @@ -23,42 +14,25 @@
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": [
"*"
]
"onlyDependOnLibsWithTags": ["*"]
}
]
}
]
}
},
{
"files": [
"*.ts",
"*.tsx"
],
"extends": [
"plugin:@nx/typescript"
],
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nx/typescript"],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"extends": [
"plugin:@nx/javascript"
],
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nx/javascript"],
"rules": {}
},
{
"files": [
"*.spec.ts",
"*.spec.tsx",
"*.spec.js",
"*.spec.jsx"
],
"files": ["*.spec.ts", "*.spec.tsx", "*.spec.js", "*.spec.jsx"],
"env": {
"jest": true
},
Expand Down
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ Provide information about the environment and the path to verify the behaviour.

### Related issue(s)/PR(s)

Let us know if this is related to any issue/pull request
Let us know if this is related to any issue/pull request
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
interval: monthly
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,4 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: '/language:${{matrix.language}}'
category: '/language:${{matrix.language}}'
9 changes: 7 additions & 2 deletions .github/workflows/pr_affected_code.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,13 @@ jobs:
version: 8
run_install: false

- run: pnpm install --no-prefer-frozen-lockfile
- name: "Install dependencies"
run: pnpm install --no-prefer-frozen-lockfile

- name: "Check it it's pretty"
run: pnpm prettier:check

- name: Run Affected Tests
shell: bash
run: npx nx affected --target=test --base=remotes/origin/main --head=HEAD
run:
npx nx affected --target=test --base=remotes/origin/main --head=HEAD
11 changes: 10 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
# Add files here to ignore them from prettier formatting
/dist
/coverage
/.nx/cache
/.nx/cache

/node_modules
/docker
/docs
/.git
/.idea
/.nx
/.pnpm-store
/.vscode
9 changes: 8 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
{
"singleQuote": true
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "none",
"arrowParens": "avoid",
"bracketSpacing": true,
"proseWrap": "always",
"printWidth": 80,
"semi": false
}
78 changes: 58 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,53 @@

# ISOMERA: The Ultimate Javascript/Typescript SaaS Boilerplate Monorepo for Modern Developers

Unlock the future of seamless SaaS development with ISOMERA, the all-encompassing Javascript/Typescript starter boilerplate monorepo. Designed for visionary developers, ISOMERA streamlines the creation of enterprise-grade applications by providing a robust, modular, and scalable foundation. Whether you're kickstarting a project with React, Next, Nest, or diving deep into TypeORM, Redux, and Material UI, our platform is your ticket to efficiency. Beyond a mere boilerplate, ISOMERA offers comprehensive documentation, training materials, and a community-driven approach. Contribute to the revolution, join a community of like-minded developers, and redefine the standards of SaaS development.

Every developer understands the journey: starting with basic functionalities and, over time, integrating advanced features like 2FA, role management, or intricate middleware logic. At the outset, it might seem manageable, but as your project scales and evolves, these additions can accumulate into months of development time. Not to mention the effort spent ensuring earlier work seamlessly integrates with new features. With ISOMERA, this narrative changes. While not every feature on our ToDo list is immediate, our roadmap is designed with foresight. As your project matures, ISOMERA grows with you, offering advanced functionalities just when you need them. It's not just about the initial boost; it's about the cumulative time and effort saved over the life of your project. Dive straight into innovation, knowing the foundational and advanced are already taken care of.
Unlock the future of seamless SaaS development with ISOMERA, the
all-encompassing Javascript/Typescript starter boilerplate monorepo. Designed
for visionary developers, ISOMERA streamlines the creation of enterprise-grade
applications by providing a robust, modular, and scalable foundation. Whether
you're kickstarting a project with React, Next, Nest, or diving deep into
TypeORM, Redux, and Material UI, our platform is your ticket to efficiency.
Beyond a mere boilerplate, ISOMERA offers comprehensive documentation, training
materials, and a community-driven approach. Contribute to the revolution, join a
community of like-minded developers, and redefine the standards of SaaS
development.

Every developer understands the journey: starting with basic functionalities
and, over time, integrating advanced features like 2FA, role management, or
intricate middleware logic. At the outset, it might seem manageable, but as your
project scales and evolves, these additions can accumulate into months of
development time. Not to mention the effort spent ensuring earlier work
seamlessly integrates with new features. With ISOMERA, this narrative changes.
While not every feature on our ToDo list is immediate, our roadmap is designed
with foresight. As your project matures, ISOMERA grows with you, offering
advanced functionalities just when you need them. It's not just about the
initial boost; it's about the cumulative time and effort saved over the life of
your project. Dive straight into innovation, knowing the foundational and
advanced are already taken care of.

#### 🌟 Join the ISOMERA Revolution as an Open-Source Contributor! 🌟

Are you passionate about shaping the future of SaaS development? Looking for a platform where your expertise can make a real difference? Welcome to ISOMERA! As an open-source project, we believe in the collective genius of the developer community. Your insights, skills, and dedication can help elevate ISOMERA to new heights. Whether you're a seasoned expert or a newcomer eager to learn, there's a space here for you. Dive into our code, collaborate with like-minded innovators, and let's co-create the ultimate Javascript/Typescript boilerplate for the next generation. Join the ISOMERA family and let's craft the future, one line of code at a time. 🚀
Are you passionate about shaping the future of SaaS development? Looking for a
platform where your expertise can make a real difference? Welcome to ISOMERA! As
an open-source project, we believe in the collective genius of the developer
community. Your insights, skills, and dedication can help elevate ISOMERA to new
heights. Whether you're a seasoned expert or a newcomer eager to learn, there's
a space here for you. Dive into our code, collaborate with like-minded
innovators, and let's co-create the ultimate Javascript/Typescript boilerplate
for the next generation. Join the ISOMERA family and let's craft the future, one
line of code at a time. 🚀

## Preview

* Landing page https://www.isomera.org/
* Platform https://app.isomera.org/
* Documentation https://doc.isomera.org/overview.html
- Landing page https://www.isomera.org/
- Platform https://app.isomera.org/
- Documentation https://doc.isomera.org/overview.html

## Goals

* Keep this starter project updated and aligned with best practices.
* Produce training materials to simplify your startup process.
* Maintain a streamlined UI, offering flexibility to choose between SCSS, Styled Components, Material UI, or Tailwind for your designs.
- Keep this starter project updated and aligned with best practices.
- Produce training materials to simplify your startup process.
- Maintain a streamlined UI, offering flexibility to choose between SCSS, Styled
Components, Material UI, or Tailwind for your designs.

## SDLC ToDo

Expand All @@ -41,7 +69,8 @@ Are you passionate about shaping the future of SaaS development? Looking for a p
- [ ] Interfaces as shared lib
- [ ] Utils as shared lib (for example time formatting)
- [ ] TypeORM & DB migrations
- [ ] Plan a strict rules for timestamps (this is frequent problem for projects where users has to interact across multiple timezones)
- [ ] Plan a strict rules for timestamps (this is frequent problem for projects
where users has to interact across multiple timezones)
- [ ] Connect S3 or other object bucket
- [ ] Production Dockerfiles
- [ ] SSL in development
Expand All @@ -51,7 +80,8 @@ Are you passionate about shaping the future of SaaS development? Looking for a p
- [ ] Easy solution for roles and access management
- [ ] SQS queue and jobs - support heavy load
- [ ] Redis & Memcached for caching + tooling in code
- [ ] Production split for api and workers to allow better control on auto-scaling
- [ ] Production split for api and workers to allow better control on
auto-scaling
- [ ] ...

## Features plan
Expand All @@ -60,30 +90,36 @@ Are you passionate about shaping the future of SaaS development? Looking for a p
- [ ] User can Sign Up & Sign In using Google, Facebook, Apple or Microsoft
- [ ] User can Sign Up & Sign In using phone number (Twillio)
- [ ] User can reset password
- [ ] User can invite other team members to organization (org created for every user, if it's not needed, should be easy to disable or just ignore)
- [ ] User can invite other team members to organization (org created for every
user, if it's not needed, should be easy to disable or just ignore)
- [ ] User can enter company details to organization (for future billing)
- [ ] User can manage roles for team (OrgOwner, OrgAdmin, OrgManager, OrgFinance, OrgAnalytic, OrgSupport, OrgUser, OrgReadonly, OrgClientVIP, OrgClient)
- [ ] User can manage roles for team (OrgOwner, OrgAdmin, OrgManager,
OrgFinance, OrgAnalytic, OrgSupport, OrgUser, OrgReadonly, OrgClientVIP,
OrgClient)
- [ ] User can transfer organization ownership
- [ ] User can enable 2FA
- [ ] User can enforce 2FA for organization users
- [ ] User can edit basic profile details (name, photo)
- [ ] User can delete organization
- [ ] User can delete account
- [ ] ...

## Developing locally

### Getting started

#### Environment preparation

You will need to install `docker` and `make` into your machine to be able to work on this project. All other dependencies are managed via Docker util images and ran
via Make commands.
You will need to install `docker` and `make` into your machine to be able to
work on this project. All other dependencies are managed via Docker util images
and ran via Make commands.

#### Using commands

You can use main commands the way you were used to, just with few small changes.
Since Make considers flags as it's own flags, not arguments being passed, you'd need to add `--` before flags. For example `make npm -- -v`. Otherwise it would give you version of make.
Since Make considers flags as it's own flags, not arguments being passed, you'd
need to add `--` before flags. For example `make npm -- -v`. Otherwise it would
give you version of make.

##### Adding node packages

Expand All @@ -103,7 +139,9 @@ make nx <whatever you need>
make node index.js
```

If you need some other console tool, please modify `Makefile` and add installation of it to the node utils image at `docker/utils/node.dockerfile`. Consistency is important.
If you need some other console tool, please modify `Makefile` and add
installation of it to the node utils image at `docker/utils/node.dockerfile`.
Consistency is important.

### Running Tests

Expand Down
25 changes: 5 additions & 20 deletions apps/api-e2e/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,17 @@
{
"extends": [
"../../.eslintrc.json"
],
"ignorePatterns": [
"!**/*"
],
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
Expand Down
13 changes: 8 additions & 5 deletions apps/api-e2e/jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@ export default {
setupFiles: ['<rootDir>/src/support/test-setup.ts'],
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', {
tsconfig: '<rootDir>/tsconfig.spec.json',
}],
'^.+\\.[tj]s$': [
'ts-jest',
{
tsconfig: '<rootDir>/tsconfig.spec.json'
}
]
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/api-e2e',
};
coverageDirectory: '../../coverage/api-e2e'
}
16 changes: 4 additions & 12 deletions apps/api-e2e/project.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,22 @@
{
"name": "api-e2e",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"implicitDependencies": [
"api"
],
"implicitDependencies": ["api"],
"projectType": "application",
"targets": {
"e2e": {
"executor": "@nx/jest:jest",
"outputs": [
"{workspaceRoot}/coverage/{e2eProjectRoot}"
],
"outputs": ["{workspaceRoot}/coverage/{e2eProjectRoot}"],
"options": {
"jestConfig": "apps/api-e2e/jest.config.ts",
"passWithNoTests": true
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
],
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": [
"apps/api-e2e/**/*.{js,ts}"
]
"lintFilePatterns": ["apps/api-e2e/**/*.{js,ts}"]
}
}
}
Expand Down
Loading

3 comments on commit 6d3539b

@vercel
Copy link

@vercel vercel bot commented on 6d3539b Nov 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vercel
Copy link

@vercel vercel bot commented on 6d3539b Nov 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

isomera-platform – ./

app.isomera.org
isomera.vercel.app
isomera-platform-git-main-cortip.vercel.app
isomera-platform-cortip.vercel.app

@vercel
Copy link

@vercel vercel bot commented on 6d3539b Nov 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.