TakeNote is an open source project, and contributions of any kind are welcome and appreciated. Open issues, bugs, and enhancements are all listed on the issues tab and labeled accordingly. Feel free to open bug tickets and make feature requests. Easy bugs and features will be tagged with the good first issue
label.
If you encounter a bug, please file a bug report. If you have a feature to request, please open a feature request. If you would like to work on an issue or feature, there is no need to request permission. Please add tests to any new features.
In order to create a pull request for TakeNote, follow the GitHub instructions for Creating a pull request from a fork. Please link your pull request to an existing issue.
Description of the project files and directories.
βββ config/ # Configuration
β βββ cypress.config.js # Cypress end-to-end test configuration
β βββ jest.config.js # Jest unit/component test configuration
β βββ nodemon.config.json # Nodemon configuration
β βββ webpack.common.js # Webpack shared configuration
β βββ webpack.dev.js # Webpack development configuration (dev server)
β βββ webpack.prod.js # Webpack productuon configuration (dist output)
βββ assets/ # Supplemental assets
βββ public/ # Files that will write to dist on build
βββ src/ # All TakeNote app source files
β βββ resources/ # Shared resources
β βββ client/ # React client side code
β β βββ api/ # Temporary placeholders for mock API calls
β β βββ components/ # React components that are not connected to Redux
β β βββ containers/ # React Redux connected containers
β β βββ contexts/ # React context global state without Redux
β β βββ router/ # React private and public routes
β β βββ sagas/ # Redux sagas
β β βββ selectors/ # Redux Toolkit selectors
β β βββ slices/ # Redux Toolkit slices
β β βββ styles/ # Sass style files
β β βββ types/ # TypeScript types
β β βββ utils/ # Utility functions
β β βββ index.tsx # Client side entry point
β βββ server/ # Node/Express server side code
β βββ handlers/ # Functions for API endpoints
β βββ middleware/ # Middleware for API endpoints
β βββ router/ # Route API endpoints
β βββ utils/ # Backend utilities
β βββ index.ts # Server entrypoint
βββ tests/ # Test suites
β βββ e2e/ # Cypress end-to-end tests
β βββ unit/ # React Testing Library and Jest tests
βββ .dockerignore # Files ignored by Docker
βββ .editorconfig # Configures editor rules
βββ .gitignore # Files ignored by git
βββ .prettierrc # Code convention enforced by Prettier
βββ .travis.yml # Continuous integration and deployment config
βββ CHANGELOG.md # List of significant changes
βββ deploy.sh # Deployment script for Docker in production
βββ Dockerfile # Docker build instructions
βββ LICENSE # License for this open source project
βββ package-lock.json # Package lockfile
βββ package.json # Dependencies and additional information
βββ README.md
βββ seed.js # Seed the app with data for testing
βββ tsconfig.json # Typescript configuration
An explanation of the package.json
scripts.
Command | Description |
---|---|
dev |
Run TakeNote in a development environment |
dev:test |
Run TakeNote in a testing environment |
client |
Start a webpack dev server for the frontend |
server |
Start a nodemon dev server for the backend |
build |
Create a production build of TakeNote |
start |
Start a production server for TakeNote |
test |
Run unit and component tests |
test:e2e |
Run end-to-end tests in the command line |
test:e2e:open |
Open end-to-end tests in a browser |
test:coverage |
Get test coverage |
This project is possible thanks to all these open source languages, libraries, and frameworks.
Tech | Description |
---|---|
Codemirror | Browser-based text editor |
TypeScript | Static type-checking programming language |
Node.js | JavaScript runtime for the backend |
Express | Server framework |
React | Front end user interface |
Redux | Global state management |
Webpack | Asset bundler |
Sass | Style preprocessor |
OAuth | Protocol for secure authorization |
ESLint | TypeScript linting |
Jest | Unit testing framework |
Cypress | End-to-end testing framework |
Coding conventions are enforced by ESLint and Prettier.
- No semicolons
- Single quotes
- Two space indentation
- Trailing commas in arrays and objects
- Non-default exports are preferred for components
- Module imports are ordered and separated: built-in -> external -> internal -> css/assets/other
- TypeScript: strict mode, with no implicitly any
- React: functional style with Hooks (no classes)
const
preferred overlet