Welcome to KnowNative! KnowNative is an open-source language learning app designed for Traditional Chinese learners (with plans to expand to other languages). Unlike traditional language apps, KnowNative allows users to build their own learning experience by importing real-world content—articles and texts written by native speakers for native speakers. From these materials, users can generate flashcards and sentence-by-sentence translations, essentially creating a personalized textbook tailored to their interests and learning goals.
KnowNative was originally created by Abigail Dawson, who now oversees the continued development of the project by volunteer Core Contributors and the broader open-source community. Whether you're new to open-source or an experienced contributor, we’d love your help in making this project a success!
Our tech stack
You do not need to be proficient in all of these technologies to contribute! We have front-end, back-end, beginner and no-code issues for contributors of all experience levels.
- Node
- Express
- React
- Vite
- MongoDB
- Sass
While anyone can contribute to the KnowNative open-source project on GitHub, I am also eager to collaborate more closely with others who are excited about this project and are looking to contribute to on a more regular and consistent (volunteer) basis.
We currently have a small team of Core Contributors who are innovating behind the scenes to bring high quality features and exceptional user experience to KnowNative, and we're always looking for more help!
NOTE: As of February 2025, we are changing "Core Contributors" to "Core Contributions". Instead of featuring only the name and bio of contributors on the Contribute page of our website, we'll highlight specific contributions and who was involved. Our website will be updated soon to reflect this change.
Contributing to KnowNative on a more regular basis is an excellent way to gain real-world experience working with a team while building your own portfolio or resume. I'm currently looking for contributions in:
- UX/UI research and design
- Software development
- Branding, social media and marketing
- Those with a special interest in linguistics and language learning - if you'd like to contribute, I'd love to hear from you!
By contributing to the project, you'll benefit from the following:
- Be featured on the Contribute page of our website, with your image, bio and professional/social links, and details of your specific contributions
- Recognition on my LinkedIn as a collaborator on the project
- Build teamwork and collaboration skills
- Add real-world project experience to your portfolio and resume
- Contribute to the long-term vision of the KnowNative project
The best way to get in touch about contributing to KnowNative is by joining our Discord community! However, if you're not ready to make the leap just yet, I'm happy to answer any questions via LinkedIn as well.
To contribute code to the open-source KnowNative project, you'll first need to run the app locally in order to make changes and submit your work. To run KnowNative locally, follow these steps:
First, fork this repository by clicking the Fork button in the top right of this page. This creates a copy under your GitHub account so you can make changes and submit pull requests.
Then, clone your fork to your local machine:
# Replace <your-username> with your GitHub username
git clone https://github.com/<your-username>/knownative.git
cd knownative
cd client
npm i
cd server
npm i
Create a new file named .env
inside the server directory and add the following variables:
DATABASE_URL=<your-mongodb-connection-string>
GOOGLE_TRANSLATE_API_KEY=<your-google-translate-api-key>
MONGODB_URI
contains the connection string for MongoDB. Learn how to connect.GOOGLE_TRANSLATE_API_KEY
contains the API key for sentence translations. Get a key.
cd client
npm run build
npm run start
cd server
npm run dev
-
Find an issue – Check out the issues tab for something to work on. You can sort by labels like
front end
,website
,good first issue
and more, depending on your interest and skillset. Comment on the issue to let us know if you’d like to work on it so we can assign it to you. -
Fork and clone the repository – Click the
Fork
button at the top right of this page to create a copy under your GitHub account. Then, clone the project and set the upstream remote. This allows you to pull in the latest changes from the main project.
git clone https://github.com/<your-username>/knownative.git
cd knownative
git remote add upstream https://github.com/AbigailDawson/knownative.git
- Switch to the right branch – All new contributions to the APP should be based on
develop
. All new contributions to the WEBSITE should be based onmain
. The following steps will assume branching offdevelop
.
git checkout develop
git pull upstream develop # Ensure you have the latest changes
- Create a new branch – Always work on a new branch from
develop
. Name your branch something related to the issue you're working on; for example,fix-button-bug
.
git checkout -b fix-button-bug
-
Make your changes – Follow coding best practices and add helpful comments as needed. Put yourself in the shoes of someone who will come along later and build on your work.
-
Commit and push your changes to your forked repository:
git add .
git commit -m "Fix button alignment issue"
git push origin fix-button-bug
Note: If changes have been made in
develop
while you were working, update your branch before submitting a PR:
git checkout develop
git pull upstream develop
git checkout fix-button-bug
git merge develop # Merge the latest changes into your branch
git push origin fix-button-bug
- Create a Pull Request (PR) against
develop
:
- Go to your forked repository on GitHub.
- Click "Contribute" → "Open pull request."
- Ensure you’re merging your branch into the original project’s
develop
branch (notmain
). - Add a clear title and description for your changes.
- Click "Create pull request." 🎉
We will review your PR and may suggest improvements.
There are several resources available to you to reference as you work on the KnowNative project:
- KnowNative Product Strategy - Learn about our mission for the project.
- KnowNative Roadmap - Learn about where the project is headed next.
- Entity Relationship Diagram (WIP) - map of data entities in KnowNative and how they are related; provides a birds eye view of how the project features fit together.
- Figma files - All designs for KnowNative, including reusable components and the beginnings of a design system.
- Source Code Guide - This guide is for developers working on the KnowNative project, designed to orient you to the source code so you can understand how to navigate the file structure, find what you’re looking for, and put all the necessary pieces together when working on features and fixes.
- SAAS Fundamentals - Get up to speed on Sass and SCSS syntax. It assumes no prior knowledge with Sass, and covers many of the core features that we'll be using and building upon in Know Native.
- CSS Style Guide (WIP) - Overview of our CSS rules & best practices. Note: KnowNative is in the process of migrating from CSS to SASS & BEM. This guide is for reference only, and not fully implemented.
Have questions or need help? Join our community!
- 💬 Discord: Join the conversation here! Meet other contributors, get help with your own contributions, and share feedback and feature requests.
Distributed under the MIT License. See LICENSE.txt
for more information.
Abigail Dawson · LinkedIn · [email protected]