- Table of Contents
- Overview
- Features
- repository Structure
- Modules
- Getting Started
- Roadmap
- Contributing
- License
- Acknowledgments
Dintorni" is the next-gen online food shopping app.
└── Dintorni/
├── .env_sample
├── Dockerfile
├── codegen.yml
├── docker-compose.yml
├── nginx/
│ └── nginx.conf
├── package.json
├── redis/
│ └── redis.conf
├── src/
│ ├── @types/
│ │ ├── bluebird.d.ts
│ │ ├── express-rate-limit.d.ts
│ │ ├── graphql-depth-limit.d.ts
│ │ ├── graphql-fields.d.ts
│ │ ├── graphql-kafka-subscriptions.d.ts
│ │ ├── ioredis.d.ts
│ │ ├── node-cron.d.ts
│ │ └── redis.d.ts
│ ├── GraphQL/
│ │ ├── Functions/
│ │ ├── MongoFilter/
│ │ ├── Tests/
│ │ ├── Types/
│ │ ├── resolvers.ts
│ │ └── typeDefs.ts
│ ├── JWT/
│ │ ├── AuthenticateToken.test.js
│ │ └── AuthenticateToken.ts
│ ├── Redis/
│ │ ├── redis.ts
│ │ ├── useDel/
│ │ ├── useGet/
│ │ └── useSet/
│ ├── Schema/
│ │ ├── Cart/
│ │ ├── Company/
│ │ ├── Likes/
│ │ ├── Product/
│ │ ├── Stripe/
│ │ └── User/
│ ├── Servers/
│ │ ├── authServer.js
│ │ └── server.ts
│ ├── firebase/
│ │ ├── checkAuth.js
│ │ ├── fbServiceAccountKey.ts
│ │ └── firebase.ts
│ └── helpers/
│ ├── canSee.ts
│ ├── initMongoDB.ts
│ └── initPubSub.ts
├── tsconfig.json
└── yarn.lock
Root
File | Summary |
---|---|
yarn.lock | This code base represents a full stack application with GraphQL utilized for querying data. It includes type definitions and resolver functions for GraphQL, JWT for authentication, Redis for caching, Docker for creating a containerized development environment, and Nginx for reverse proxy setup. Custom types for external libraries are defined in'@types'. The'src' directory contains business logic, database schema, server initialization files, and Firebase for additional user authentication. |
.env_sample | The provided code represents a scalable application structure, including primary configurations and business logic. Core functionalities include interacting with MongoDB, Redis, and handling GraphQL queries through dedicated configurations and resolvers. It also manages user authentication using JWT, initiates Firebase services, and manages Stripe transactions. Application server-related and environment-specific settings are maintained in the '.env_sample' file. Docker support and Nginx configurations are included to control the deployment environment. |
docker-compose.yml | The code defines a Docker Compose configuration for a JavaScript application, with services for Redis and Nginx proxy. Redis, an in-memory data structure store, is for caching and the Nginx serving as a web-proxy. Each service is configured with specific Docker images and mounting volumes for configuration files. The node application service builds an environment from the current directory, linking it with Redis, and setting up environment variables from a.env file. |
tsconfig.json | The code represents the configuration for a TypeScript project. The project targets ES6 and uses CommonJS module resolution. It also enables importing.json files, allows JavaScript files being part of the program, and supports CommonJS interoperability. The output files are directed into the "./dist" folder. It enforces consistent casing in file names and skips type checking for all.d.ts files. |
codegen.yml | The given directory outline and'codegen.yml' file indicate a GraphQL-based project with Redis and Docker support. It's set to use MongoDB, Firebase authentication, JWT for token authentication, and Nginx as its web server. This project automates typescript type generation for GraphQL resolvers using'codegen.yml'. The'src' directory contains various functional aspects like GraphQL resolvers, schemas, servers, token authentication code and helper functions. It also supports rate-limiting and depth-limiting for GraphQL queries, and cron jobs. |
package.json | The code represents the server-side directory structure and package manifest for a Node.js application. It supports GraphQL API with predefined schema, resolvers, and types; Firebase authentication; Redis database configurations; rate limiting; schedulers and subscription services. It includes Docker support for containerization, Nginx for web serving, and a JWT authentication service. Testing, code generation and server automation scripts are built into package.json. It manages dependencies for packages like Apollo Server, Firebase, Mongoose, ioredis, Express, and others. |
Dockerfile | HTTPStatus Exception: 429 |
Redis
File | Summary |
---|---|
redis.conf | HTTPStatus Exception: 429 |
redis.ts | HTTPStatus Exception: 429 |
Nginx
File | Summary |
---|---|
nginx.conf | HTTPStatus Exception: 429 |
@types
File | Summary |
---|---|
node-cron.d.ts | HTTPStatus Exception: 429 |
graphql-fields.d.ts | HTTPStatus Exception: 429 |
express-rate-limit.d.ts | HTTPStatus Exception: 429 |
graphql-depth-limit.d.ts | HTTPStatus Exception: 429 |
bluebird.d.ts | The given code structure reflects a project utilizing Docker, GraphQL, JWTs, Redis, and various helper tools. Docker-related files facilitate containerization. JWT and GraphQL directories manage authentication and data querying respectively. The Redis directory handles caching, emphasizing data manipulation. Helpers initiate MongoDB and a PubSub service. The specific source file (src/@types/bluebird.d.ts) is typescript declaration file for the Bluebird promise library. |
ioredis.d.ts | HTTPStatus Exception: 429 |
redis.d.ts | HTTPStatus Exception: 429 |
graphql-kafka-subscriptions.d.ts | HTTPStatus Exception: 429 |
Servers
File | Summary |
---|---|
authServer.js | HTTPStatus Exception: 429 |
server.ts | HTTPStatus Exception: 429 |
Useget
File | Summary |
---|---|
useGet.ts | HTTPStatus Exception: 429 |
Useset
File | Summary |
---|---|
useSet.ts | HTTPStatus Exception: 429 |
Usedel
File | Summary |
---|---|
useDel.ts | HTTPStatus Exception: 429 |
Helpers
File | Summary |
---|---|
canSee.ts | HTTPStatus Exception: 429 |
initMongoDB.ts | HTTPStatus Exception: 429 |
initPubSub.ts | HTTPStatus Exception: 429 |
Company
File | Summary |
---|---|
Company.model.ts | HTTPStatus Exception: 429 |
shopByFirebaseID.ts | HTTPStatus Exception: 429 |
closeShops.ts | HTTPStatus Exception: 429 |
shop.ts | HTTPStatus Exception: 429 |
favouriteShops.ts | HTTPStatus Exception: 429 |
shops.ts | HTTPStatus Exception: 429 |
shopsByFirebaseCompanyID.ts | HTTPStatus Exception: 429 |
productsShop.ts | HTTPStatus Exception: 429 |
updateShop.ts | HTTPStatus Exception: 429 |
disactivateShop.ts | HTTPStatus Exception: 429 |
activateShop.ts | HTTPStatus Exception: 429 |
createShop.ts | HTTPStatus Exception: 429 |
Shop
File | Summary |
---|---|
Shop.model.ts | HTTPStatus Exception: 429 |
Likes
File | Summary |
---|---|
ProductLike.module.js | HTTPStatus Exception: 429 |
CompanyLike.module.js | HTTPStatus Exception: 429 |
Cart
File | Summary |
---|---|
Cart.model.ts | HTTPStatus Exception: 429 |
addToCart.ts | HTTPStatus Exception: 429 |
Product
File | Summary |
---|---|
Product.model.ts | HTTPStatus Exception: 429 |
closeProductsTitle.ts | HTTPStatus Exception: 429 |
product.ts | HTTPStatus Exception: 429 |
products.ts | HTTPStatus Exception: 429 |
shopProduct.ts | HTTPStatus Exception: 429 |
deleteProduct.ts | HTTPStatus Exception: 429 |
createProduct.ts | HTTPStatus Exception: 429 |
changeProductStatus.ts | HTTPStatus Exception: 429 |
updateProduct.ts | HTTPStatus Exception: 429 |
User
File | Summary |
---|---|
User.model.ts | HTTPStatus Exception: 429 |
user.ts | HTTPStatus Exception: 429 |
FCM.ts | HTTPStatus Exception: 429 |
updateUser.ts | HTTPStatus Exception: 429 |
CreateUser.ts | HTTPStatus Exception: 429 |
Stripe
File | Summary |
---|---|
PaymentIntent.model.ts | HTTPStatus Exception: 429 |
account.ts | HTTPStatus Exception: 429 |
paymentIntent.ts | HTTPStatus Exception: 429 |
stripePayment.ts | HTTPStatus Exception: 429 |
createStripeAccount.ts | HTTPStatus Exception: 429 |
createOrder.ts | HTTPStatus Exception: 429 |
accountLink.ts | HTTPStatus Exception: 429 |
Firebase
File | Summary |
---|---|
fbServiceAccountKey.ts | HTTPStatus Exception: 429 |
firebase.ts | HTTPStatus Exception: 429 |
checkAuth.js | HTTPStatus Exception: 429 |
Graphql
File | Summary |
---|---|
typeDefs.ts | HTTPStatus Exception: 429 |
resolvers.ts | HTTPStatus Exception: 429 |
Mongofilter
File | Summary |
---|---|
MongoFilter.ts | HTTPStatus Exception: 429 |
Types
File | Summary |
---|---|
types.ts | HTTPStatus Exception: 429 |
Tests
File | Summary |
---|---|
resolvers.test.js | HTTPStatus Exception: 429 |
init.js | HTTPStatus Exception: 429 |
Actions
File | Summary |
---|---|
like.ts | HTTPStatus Exception: 429 |
Jwt
File | Summary |
---|---|
AuthenticateToken.test.js | HTTPStatus Exception: 429 |
AuthenticateToken.ts | HTTPStatus Exception: 429 |
Dependencies
Please ensure you have the following dependencies installed on your system:
- ℹ️ Dependency 1
- ℹ️ Dependency 2
- ℹ️ ...
- Clone the Dintorni repository:
git clone https://github.com/tommaso-merlini/Dintorni.git
- Change to the project directory:
cd Dintorni
- Install the dependencies:
npm install
npm run build && node dist/main.js
npm test
ℹ️ Task 1: Implement X
ℹ️ Task 2: Implement Y
ℹ️ ...
Contributions are welcome! Here are several ways you can contribute:
- Submit Pull Requests: Review open PRs, and submit your own PRs.
- Join the Discussions: Share your insights, provide feedback, or ask questions.
- Report Issues: Submit bugs found or log feature requests for TOMMASO-MERLINI.
Click to expand
- Fork the Repository: Start by forking the project repository to your GitHub account.
- Clone Locally: Clone the forked repository to your local machine using a Git client.
git clone <your-forked-repo-url>
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear and concise message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to GitHub: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
Once your PR is reviewed and approved, it will be merged into the main branch.
This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.
- List any resources, contributors, inspiration, etc. here.