Skip to content

niidl/niidl-client

Repository files navigation


niidl

Backend of niidl.co, an App created for intermediate coders as a place to search for and collaborate on code.
Check out our org on GitHub
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Basic Outline
  4. Usage
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgments

About The Project

niidl

Learning to code can be a daunting task. There are plenty of resources on how to get started, but once you understand the basics, you are thrust directly into the world of complex projects with intimidating code bases, and no direction. Here at niidl, we aim to bridge that gap by connecting engineers with projects that resonate with them, through advanced search features and personalized discussion boards. For the full story on niidl's inception, please visit our org page!

(back to top)

Built With

This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.

  • TypeScript
  • NextJS
  • Firebase
  • Vercel
  • Docker

(back to top)

Getting Started

To get a local copy up and running follow these simple steps. Please keep in mind this repo only includes the frontend, you will also need fork niidl's server side repo which can be found here: niidl-server

Prerequisites

You will need to create a ![Firebase][firebase.js] account for the authentication process, if you do not have one already. Our App's frontend has been deployed using Vercel, which has a solid free tier plan, however, it does not allow for multiple users to share a project. We got around this by having only our Tech Lead create an account and work through deployment. Another way to get around this restriction would be to share the account between multiple people, which we do not recommend. If you are working solo, you can disregard this entirely. For another option, we recommend [![Render][render.com]][render-url] as it is one of the few free deployment platforms on the market, but please be aware that it can be quite slow.

Installation

Below you will find the basics on installation and set up. Please note you will need to follow the steps found on niidl-server before any deployment can be done.

  1. Clone the repo
    git clone https://github.com/your_username_/Project-Name.git
  2. Module Installation
    npm install
  3. Run Client The default port is set to localhost:8080.
    npm run dev

(back to top)

Basic Outline

The following is a rough breakdown for the client side of the application.

Major APIs Used

For this project, we make use of several APIs including Firebase and GitHub.

Firebase

Firebase is used for authentication via GitHub exclusively. Using it's framework, we handle user sign in and keep user data secure. Because we create our own session tokens via Crypto by [![Node][node.js]][node-url] we query for Firebase for the following:

  • UID
  • Email These are then used in the query to the GitHub API to ensure we are accessing the correct user. As Username and Photo can be changed at any point, those are updated each time a user logs in, while the rest remain constant.

GitHub API

The documentation for GitHub's API is extensive and is utilized throughout the build. It is used to get information including the following:

  • User Info
    • Username
    • GitHub Photo
  • Repository Info
    • Repo Name
    • Repo Issues
    • Repo Code

(back to top)

Usage

The usage for this resource as stated above is to create an place for coders to collaborate on projects with a more robust search function and better filtering. As GitHub primarily filters off languages and keywords, this tends to leave much to be desired when looking for a project that resonates with engineers looking to help others. We also wanted a place where relatively inexperienced coders would have the opportunity to offer their skills without feeling judged. We know how high the perceived barrier to entry can be for working on "major projects" and wanted to make that feel more accessible.

(back to top)

Roadmap

MVP

  • Broader search via GitHub API
    • Incorporate opensource projects
    • Limit functionality to promote project creation through niidl
  • Secure authentication via Firebase
    • Cookie utilization
  • User Features
    • Built out user dashboard
  • Discussion Features
    • Sub pages to allow for navigation through
    • Add tabs including new ideas, pinned threads, most popular
    • Allow for upvoting of comments/threads
    • Edit/Delete comments/threads
    • All comments/threads have markdown capability
  • UI/UX
    • Redirect to Thread/Project on creation
    • Cover message box with login/signup display if not logged in
    • Search bar with past history

V 1.1

  • Cookie Modal on first login
  • Split tags into categories (language/descriptors)
  • Validate GitHub owner so users can only upload their own projects
  • Add profile pictures to messages
  • Loading animation for transitions
  • Allow for markdown to include inline code

Future Implementations

  • Multi-language Support
  • Further user dashboard personalization
  • Continue refinement of project categorization and filtering

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

(back to top)

Acknowledgments

It's impossible to add every single resource that helped to make this possible, but below you will find a few.

(back to top)

About

Client Repository for Needle

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages