Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some updates I might need for Backend-ish TS + AWS role #4

Open
ashishkarki opened this issue Sep 14, 2024 · 0 comments
Open

Some updates I might need for Backend-ish TS + AWS role #4

ashishkarki opened this issue Sep 14, 2024 · 0 comments

Comments

@ashishkarki
Copy link
Owner

Job Advert Breakdown:

The job you're aiming for mentions key areas of proficiency such as JavaScript, TypeScript, React, Node.js, Next.js, cloud services (especially AWS), API security, and DevOps. Let’s break down the requirements based on your DijitallNotarer project and outline what you’re already doing, what you need to focus on, and how to shape the project to better align with the job advert.


Key Job Requirements & Your Current Progress

1. Proficiency with JavaScript, TypeScript, React, Node.js, and Next.js

  • Current Progress:

    • JavaScript/TypeScript: You are using TypeScript extensively in your NestJS backend and shared libraries.
    • React: You haven't started working on the React frontend, but the plan is to use Next.js for building the client. This will give you experience with both React and Next.js.
    • Node.js: NestJS runs on Node.js, and you're using it to build a microservice-based backend.
  • Next Steps:

    • Next.js Client: Start working on the React/Next.js frontend to handle the digital notarization platform. Focus on implementing routing, server-side rendering, and API integration.
    • Hooks & State Management: Learn about React Hooks and state management tools like Redux or Recoil to manage application state efficiently in a real-world app.
    • TypeScript Proficiency: Keep using TypeScript in both frontend and backend to ensure type safety and a scalable architecture.

2. Experience with Building and Securing APIs

  • Current Progress:

    • APIs: Your project already has a GraphQL API using NestJS and Apollo Server.
    • Security: So far, security isn't a focus in your setup, but this is an important part of any professional project.
  • Next Steps:

    • API Security: Implement security measures like JWT (JSON Web Token) for authentication, along with input validation and role-based access control (RBAC). You can use NestJS Guards for this.
    • API Rate Limiting & Throttling: Consider adding rate limiting and throttling to protect your API from abuse.
    • Error Handling: Implement a proper error-handling strategy for your GraphQL API, ensuring clients get informative and secure error messages.

3. Cloud Services and AWS Proficiency (Lambda, API Gateway, DynamoDB, AWS CDK/SAM)

  • Current Progress:

    • You’re already using LocalStack to simulate AWS services locally, including S3 and DynamoDB.
    • Docker is set up for running services locally, but you haven’t moved to actual AWS yet.
  • Next Steps:

    • AWS Lambda: Implement parts of your project using AWS Lambda for serverless computing. For example, document processing or verification can be offloaded to Lambda functions.
    • API Gateway: Once you set up Lambda, use AWS API Gateway to expose your API securely.
    • DynamoDB: You are already simulating DynamoDB with LocalStack. Use this in your project for storing documents and metadata in a scalable, NoSQL database.
    • AWS CDK or SAM: Use AWS CDK (Cloud Development Kit) or SAM (Serverless Application Model) to deploy your infrastructure. CDK helps in defining your AWS resources using TypeScript, which aligns with your current stack.
    • S3 Integration: Set up an S3 bucket to handle document storage, with versioning and access control via IAM roles.

4. Native App Development with Expo or React Native

  • Current Progress: No work related to mobile apps in the DijitallNotarer project yet.

  • Next Steps:

    • React Native: Consider adding a mobile app component to your project. For example, you could build a simple React Native app that allows users to upload documents for notarization.
    • Expo: Use Expo to streamline React Native development. It provides tools for testing and deploying React Native apps quickly, even if you’re not familiar with mobile development.

5. DevOps and CI/CD Pipelines

  • Current Progress:

    • You've set up a GitHub Actions pipeline for your project, which runs tests and builds for your NestJS backend on every push.
  • Next Steps:

    • CI/CD for Frontend: Extend your GitHub Actions pipeline to include Next.js builds and testing. Add end-to-end testing with tools like Cypress or Playwright.
    • Automated Deployments: Set up a pipeline for automatic deployments to AWS. You can use GitHub Actions to trigger AWS deployments using AWS CDK or SAM.

6. Experience with API Gateway, Lambda, and DynamoDB

  • Current Progress: You are simulating AWS services using LocalStack, but haven’t fully set up AWS yet.

  • Next Steps:

    • Move to Real AWS Environment: Gradually shift from LocalStack to the real AWS environment. Start by deploying services like DynamoDB, Lambda, and API Gateway in AWS.
    • Monitoring and Logging: Learn about AWS tools like CloudWatch for logging and monitoring your API and Lambda functions in production.

7. CI/CD, DevOps, and Automation

  • Current Progress: Basic GitHub Actions for CI/CD.

  • Next Steps:

    • Improve CI/CD: Expand your GitHub Actions to include automated testing, builds, and deployment to AWS.
    • DevOps: Learn more about Docker, Kubernetes, or using AWS ECS (Elastic Container Service) to deploy and manage containers at scale. Set up staging and production environments with automated deployments.

Recommended Tech Stack Updates

  • React/Next.js Frontend: Focus on building the frontend with Next.js and Apollo Client to connect to your backend GraphQL API.
  • AWS Services: Deploy the backend services to AWS using Lambda, API Gateway, DynamoDB, and S3. Use AWS CDK for infrastructure-as-code (IaC).
  • React Native: Consider building a React Native or Expo app for mobile usage. This will align with the job requirement of mobile app development.
  • CI/CD and DevOps: Improve the CI/CD pipeline with automated testing, linting, and deployment steps for both frontend and backend. You can use GitHub Actions, CircleCI, or Jenkins.

What You Need to Learn

  • AWS CDK & AWS Lambda: Start learning about AWS CDK, which will allow you to deploy your infrastructure using TypeScript. Get comfortable with deploying and managing Lambda functions, API Gateway, and DynamoDB in AWS.
  • React Native/Expo: Since the job mentions native mobile development, learning React Native or Expo is a good step forward. You can build a simplified mobile version of your app for document uploads or verification.
  • API Security & Best Practices: Learn about securing APIs, including implementing JWT authentication, OAuth, or API Key strategies.
  • Advanced DevOps: Continue improving your CI/CD pipeline and learn about Kubernetes, Docker orchestration, or AWS ECS for container deployment.

Conclusion

Your DijitallNotarer project already covers several key areas required by the job, including TypeScript, Node.js, and basic API development. However, to match the job description more closely, you need to:

  • Focus on developing a Next.js frontend.
  • Shift from local simulation to using real AWS services like Lambda, API Gateway, and DynamoDB.
  • Add API security and expand the CI/CD pipeline for both frontend and backend.
  • Consider exploring React Native or Expo to meet the native app development requirement.

These steps will make you more prepared for the job, and your project will serve as a showcase of your skills when applying.

Let me know if you'd like to go deeper into any of these topics!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant