
A web app to store and share your constructed languages.
Read more about conlangs at conlang.org.
- Add ability for users to create conlangs
- Add simple dashboard to view and manage conlangs
- Dashboard shows create form if none created, otherwise shows a button to create a new conlang
- Add description to conlang data
- Users can edit conlang to change name, description, and public status
- Change public column to eye and eye-slash icons
- Add view conlang page (placeholder, just shows name and description)
- Add open conlang page button on conlang table
- User can add tags to conlang
- Move edit and delete buttons to individual conlang pages
- Add ability to delete conlang
- Instead of conditionally rendering form on dashboard, redirect to new conlang page if none created
- Users can add words
- Add ability to edit word
- Add ability to delete word
- Users can tag words with custom tags
- User can add multiple sections and definitions to a word
- Signed-in user view vs owner view vs public view
- Users can create patterns for inflections
- tree visualization of different possible inflections based on lexical category, class, etc.
- Landing page shows a list of recent public conlangs
- New query to get most recent public conlangs
- Use react table visibility to hide unwanted columns from conlang table
- Update landing page copy with features and a blurb
- Add 'coming soon' indicators to unimplemented features
- Create separate db/tagged tables for production
- Set up clerk auth for production
- Use server actions instead of API requests
- see createWord
- Create a custom 404/not found page
- Update afterSignInUrl to fallbackUrl and forceUrl
- Maybe create users table with data from clerk and tie it to the conlang table
- Then pull user info from conlang table join instead of react query
- dark mode
- custom user primary colors
- Create and manage conlangs: Users can add multiple conlangs, each with a lexicon and grammar rules.
- Share conlangs: Conlangs can be publicly shared with others to view, download, or collaborate on.
- Responsive design: Accessible from any device, providing a consistent experience on desktops, tablets, and mobile.
This project uses the following technologies:
- Next.js: The React framework for production.
- Tailwind CSS: A utility-first CSS framework for rapid UI development.
- PostgreSQL: The world's most advanced open source relational database.
- Drizzle: A lightweight and performant TypeScript ORM.
- Vercel: Platform for frontend frameworks and static sites, integrated with GitHub for continuous deployment.
- Clerk: Easy-to-use authentication and user management that works out of the box with Next.js.
- Sentry: Error tracking and monitoring for production.
Get a local copy of this project up and running by following these steps:
Make sure you have the following technologies installed on your system:
You'll need a postgres database to run this project. You can use Vercel Postgres for free.
-
Clone the repo
git clone https://github.com/charliedevs/conlang-dictionary.git cd conlang-dictionary
Note: Consider forking this project on GitHub to simplify local development and deployment. In that case, replace the url above with the url of your own forked repo. You can set up a vercel account for free and connect it to your own github repo hosting a fork of this project.
-
Install depedencies
npm install
-
Set up environment variables Copy
.env.example
to a new file called.env
and populate it with your actual data. (You should also copy the contents of your.env
file into your vercel project.)Note: Never commit secrets directly to the repository. Always use environment variables and keep sensitive data out of your codebase.
-
Run the development server
npm run dev
Navigate to
http://localhost:3000
. The app wil automatically reload if you change any of the source files.
This project is configured for deployment on Vercel, which simplifies deploying Next.js apps. To deploy:
- Push your changes to GitHub
git add . git commit -m "Add a meaningful commit message describing your changes" git push origin main # or another branch
- Deploy on Vercel
- Go to Vercel and sign in with your GitHub account.
- Click on "New Project" and select your repository.
- Set up environment variables from your
.env
file into your project (under Settings). - Click on Storage under your project and "Create Database" (this project uses Postgres)
- Connect your Vercel project to your new database
Vercel will automatically build and deploy your app when changes are pushed to your repository.
This is an open-source project. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This is a T3 Stack project bootstrapped with create-t3-app
.
If you are not familiar with the different technologies used in this project, please refer to the respective docs.
To learn more about the T3 Stack, take a look at the following resources:
- Documentation
- Learn the T3 Stack — Check out these awesome tutorials
You can check out the create-t3-app GitHub repository — your feedback and contributions are welcome!
This project couldn't have been created without the direction of Jessie Peterson and David Peterson, along with the amazing community of conlangers at LangTime Studio. Check out their content below:
Copyright © 2024 Charles DavisThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.