Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
7f26325
feat: add server display name logic
moses-codes Jun 13, 2025
dfd3361
build: bump packages
emmebravo Jun 25, 2025
da50ac4
chore: upgrade tailwind from v3 to v4
numulaa Jun 15, 2025
1aa2ba2
test: fix missing env variable for backend test
alcpereira Jun 27, 2025
8df61fb
build: update cypress to latest version
numulaa Jul 2, 2025
455c254
added comments + removed redundant code
moses-codes Jul 7, 2025
e930a98
moved server name logic into separate function
moses-codes Jul 7, 2025
c73a94e
feat: allow moderator to delete any event
DevinCLane Jun 3, 2025
4d3c947
feat: set cookie with 7 day max age
merrua Jun 26, 2025
9eb5777
added testcase for "nick" property
moses-codes Jul 22, 2025
89a7d24
chore: change root package name to lowercase
AngelCodes95 Jul 22, 2025
1db9501
setup fly.io automatic deploys with github actions
Apr 24, 2025
d40983b
Revert "feat: set cookie with 7 day max age"
alcpereira Jul 24, 2025
b8d327b
Fix: Discord OAuth redirect issue
AngelCodes95 Jul 29, 2025
f4c3518
add codeowners file
DevinCLane Jul 29, 2025
5aede3e
feat: restore cookie with 7 day max age
AngelCodes95 Jul 29, 2025
2dc56e5
Update CODEOWNERS with eric
DevinCLane Jul 29, 2025
6289b57
fix: capitalize 'D' in all instances of 100Devs #604
absar22 Jul 30, 2025
f01a530
fixed a tringy
snikmas Jul 26, 2025
f449366
chore: update packages versions that are vulnerable
alcpereira Jul 23, 2025
b36d3c3
docs: move to the main repo
merrua Jul 22, 2025
1d542ee
docs: fix broken links after move
merrua Aug 5, 2025
05c79cd
chore: delete setup proxy
cevangel Jun 24, 2025
88013e2
tests for no nick property, no server data
moses-codes Aug 12, 2025
1cadae9
fix: typo WelcomUserModel comp Cant => Can't
adel-abdulazeem Aug 12, 2025
6552a3a
feat(ui): add cursor pointer and hover effects to all buttons
Aswanth-v Aug 4, 2025
65da49a
Edit Discord 0Auth2 Docs
dan-foley Aug 7, 2025
16f0001
added contributing guidelines to readme
Hailo7ts Aug 19, 2025
983d944
Bugfix | Issue - 550 | Added mobile first styles for the application and
PratikTomar Jul 14, 2025
3699aee
doc/editing 03 development process
ghiblimagic Aug 13, 2025
26d1f9e
feature531 recurring events bugfix
Ashir-Valjee Jul 29, 2025
9f8a46d
Remove broken cyclic button from README
sajwan05 Aug 29, 2025
ac41504
feat: add server display name logic
moses-codes Jun 13, 2025
7f8b15f
added comments + removed redundant code
moses-codes Jul 7, 2025
ed43d9c
moved server name logic into separate function
moses-codes Jul 7, 2025
250c4e0
added testcase for "nick" property
moses-codes Jul 22, 2025
9c0a2ef
tests for no nick property, no server data
moses-codes Aug 12, 2025
771e860
Merge branch 'feature#482' of https://github.com/moses-codes/Together…
moses-codes Sep 16, 2025
07c6da6
adjusted logic to fit proper user flow
moses-codes Sep 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# they will will be requested for
# review when someone opens a pull request.

* @emmebravo @DevinCLane @alcpereira @moses-codes @funbunch @merrua @intelagense
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions .github/workflows/fly-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Deploy to Fly.io

on:
push:
branches:
- main

jobs:
deploy:
name: Deploy App
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Fly.io CLI
uses: superfly/flyctl-actions/setup-flyctl@v1
with:
version: 0.3.155

- name: Deploy to Fly.io
env:
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
run: flyctl deploy --remote-only
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
build
.nyc_output
coverage
CODEOWNERS
24 changes: 14 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
<div align="center">
<a href="https://deploy.cyclic.sh/GH_LOGIN/GH_REPO">
<img height="28px" src="https://deploy.cyclic.sh/button.svg" />
</a>
<a href="https://discord.com/channels/735923219315425401/1038482732633825442">
<img height="28px" src="https://img.shields.io/badge/Discord-7289da?&logo=discord&logoColor=white" alt="Discord"/>
</a>
Expand Down Expand Up @@ -31,9 +28,9 @@
what's going on in the 100Devs community!
<br/>
<br/>
<a href="https://github.com/Together-100Devs/Together/wiki">Project Wiki</a>
<a href="https://github.com/Together-100Devs/Together/tree/main/docs/01-Team-Organization.md">Project Docs</a>
·
<a href="https://github.com/Together-100Devs/Together/wiki/04-Contributing">Contributing guide</a>
<a href="https://github.com/Together-100Devs/Together/tree/main/docs/04-Contributing.md">Contributing guide</a>
·
<a href="https://together.rocks/"><strong>Link to project</strong></a>
·
Expand Down Expand Up @@ -75,7 +72,7 @@

# 📢 About

Together is a new app designed for 100devs. Together is a group calendar for public events, so you can see what's going on in your community. We're making it easier to find out about the events that are happening in Discord and let you know how much fun they'll be!
Together is a new app designed for 100Devs. Together is a group calendar for public events, so you can see what's going on in your community. We're making it easier to find out about the events that are happening in Discord and let you know how much fun they'll be!

<br/>

Expand Down Expand Up @@ -119,10 +116,10 @@ Together is a new app designed for 100devs. Together is a group calendar for pub

## 💻 Install

- Read up on our [New Developer Onboarding](https://github.com/Together-100Devs/Together/wiki/02---Onboarding) in the wiki.
- Read up on our [New Developer Onboarding](https://github.com/Together-100Devs/Together/tree/main/docs/02-Onboarding.md) in the docs.
- Fork and clone the repository to your local computer.
- Complete and store `.env` file in the `server/` folder
- [(See .env template setup instructions)](https://github.com/Together-100Devs/Together/wiki/02---Onboarding#development-machine-setup)
- [(See .env template setup instructions)](https://github.com/Together-100Devs/Together/tree/main/docs/02-Onboarding.md#development-machine-setup)
- `npm install` in the root folder. installs the required dependencies.
- `npm run dev` in the root folder. This starts the front-end and back-end in one terminal.
- This runs a local instance of mongodb. You can connect to it by connecting to `mongodb://127.0.0.1:27017/` with any MongoDB client like [Compass](https://www.mongodb.com/products/compass).
Expand Down Expand Up @@ -155,17 +152,24 @@ We highly encourage you to ask questions and join the discussion in the [Togethe

## Help us improve Together!

<em>Together</em> is a community-driven open source project backed by 100devs students. Whether you are helping us fixing bugs, proposing new feature, improving our documentation or spreading the word - <strong>All contributions are welcome.</strong>
<em>Together</em> is a community-driven open source project backed by 100Devs students. Whether you are helping us fixing bugs, proposing new feature, improving our documentation or spreading the word - <strong>All contributions are welcome.</strong>

<br>

If you're interested in contributing, you may:

- Read our [Contributing guide.](https://github.com/Together-100Devs/Together/wiki/04-Contributing)
- Read our [Contributing guide.](https://github.com/Together-100Devs/Together/tree/main/docs/04-Contributing.md)
- Join the [#Together thread](https://discord.com/channels/735923219315425401/1038482732633825442) within the 100Devs Discord to discuss your ideas.
- Visit the [Issues tab](https://github.com/Together-100Devs/Together/issues) to request an issue or to open a new issue.
- You can also convert a "draft todo" to an issue on the current [Project Board.](https://github.com/Together-100Devs/Together/projects?query=is%3Aopen)

## Contributing Guidelines (abbrieviated)

1. Comment on an <a href="https://github.com/Together-100Devs/Together/issues">issue</a> you'd like to work on.
2. Wait to be assigned that issue on GitHub
3. Once you are assigned, you are cleared to work on that issue.
4. Proceed by following the Contributing Guidelines

<p align="right">(<a href="#top">back to top</a>)</p>

<div align='center'>
Expand Down
8 changes: 3 additions & 5 deletions client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "client",
"description": "Client for Together App",
"main": "src/index.jsx",
"author": "100devs",
"author": "100Devs",
"type": "module",
"scripts": {
"start": "vite",
Expand All @@ -20,14 +20,12 @@
},
"devDependencies": {
"@storybook/react-vite": "^9.0.12",
"@tailwindcss/vite": "^4.1.10",
"@vitejs/plugin-react": "^4.4.1",
"autoprefixer": "^10.4.13",
"axios": "^1.1.3",
"http-proxy-middleware": "^2.0.6",
"postcss": "^8.4.18",
"prop-types": "^15.8.1",
"storybook": "^9.0.12",
"tailwindcss": "^3.2.2",
"tailwindcss": "^4.1.10",
"vite": "^6.3.5",
"vite-plugin-istanbul": "^7.0.0"
},
Expand Down
6 changes: 0 additions & 6 deletions client/postcss.config.cjs

This file was deleted.

2 changes: 1 addition & 1 deletion client/src/features/adminDashboard/EventCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ function EventCard({ event }) {
<li className="text-2xl md:text-3xl lg:text-4xl font-bold">
{event.title}
</li>
<li className="text-mainBlue">{event.description}</li>
<li className="text-main-blue">{event.description}</li>
<hr className="border-teal-light" />
<li>Scheduled by: {event.user?.displayName || "UNKNOWN"}</li>
</ul>
Expand Down
4 changes: 2 additions & 2 deletions client/src/features/auth/LoginWithDiscord.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const LoginWithDiscord = ({ DiscordIcon }) => {
type="submit"
>
<div className="flex border-2 border-slate-400 bg-white rounded-2xl">
<div className="flex flex-row space-x-3 py-3 px-8 m-3 bg-discordBtn rounded-lg font-bold">
<div className="flex flex-row space-x-3 py-3 px-8 m-3 bg-discord-btn rounded-lg font-bold cursor-pointer">
<DiscordIcon className="w-7 h-7" />
<span>Login with Discord</span>
</div>
Expand All @@ -29,7 +29,7 @@ const LoginWithDiscord = ({ DiscordIcon }) => {
className="flex items-center justify-center tracking-widest gap-3"
>
<div className="flex border-2 border-slate-400 bg-white rounded-2xl">
<div className="py-3 px-8 m-3 bg-discordBtn rounded-lg font-bold">
<div className="py-3 px-8 m-3 bg-discord-btn rounded-lg font-bold cursor-pointer">
Logout
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions client/src/features/calendar/Calendar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,14 @@ const Calendar = ({ date }) => {

// while we are loading events, add the "animate-pulse" class to show skeleteon loading effect
let classNames =
"flex flex-grow h-full w-full overflow-auto text-gray-700 bg-white";
"flex grow h-full w-full overflow-auto text-gray-700 bg-white";
if (status === Status.LOADING) {
classNames += " animate-pulse";
}

return (
<div className={classNames}>
<div className="flex flex-col flex-grow">
<div className="flex flex-col grow">
{/* render error message if there was an error fetching data */}
{status === Status.REJECTED && <div>{error}</div>}
<AllDays />
Expand Down
2 changes: 1 addition & 1 deletion client/src/features/calendar/DayCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ const DayCard = ({ date, events }) => {
</div>
{isFutureOrToday && ( // Only render the button if the date is >= current day
<button
className="absolute bottom-0 right-0 items-center justify-center hidden w-6 h-6 mb-2 mr-2 text-white bg-gray-400 rounded group-hover:flex hover:bg-gray-500"
className="absolute bottom-0 right-0 items-center justify-center hidden w-6 h-6 mb-2 mr-2 text-white bg-gray-400 rounded-sm group-hover:flex hover:bg-gray-500 cursor-pointer"
onClick={() => {
let chosenDate = `${date.getFullYear()}-${(date.getMonth() + 1)
.toString()
Expand Down
2 changes: 1 addition & 1 deletion client/src/features/calendar/DayCardList.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const DayCardList = ({ data, firstDayOfMonth }) => {

return (
<div
className={`grid flex-grow w-full h-auto grid-cols-7 grid-rows-${numRows} gap-px pt-px mt-1 bg-gray-200`}
className={`grid grow w-full h-auto grid-cols-7 grid-rows-${numRows} gap-px pt-px mt-1 bg-gray-200`}
>
{/* Empty div used for days that are not in the month */}
{daysFromPrevMonth.map((day) => (
Expand Down
12 changes: 6 additions & 6 deletions client/src/features/calendar/Event.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { formatToLocalTime } from "../../utilities/calendar";
import { useModalContext } from "../../contexts/ModalContext";
import { formatToLocalTime } from "../../utilities/calendar";

const Event = (props) => {
const modal = useModalContext();
Expand All @@ -12,17 +12,17 @@ const Event = (props) => {
modal.handleOpen();
}}
key={props.event.title}
className="flex items-center flex-shrink-0 h-5 px-1 text-sm hover:bg-gray-200"
className="flex items-center truncate text-clip md:text-ellipsis shrink-0 h-5 px-1 text-sm hover:bg-gray-200 cursor-pointer"
>
<span
className={`flex-shrink-0 w-2 h-2 ${
className={`shrink-0 w-2 h-2 ${
props.event.confirmed ? confirmedCss : unconfirmedCSss
} rounded-full`}
} rounded-full hidden md:inline`}
></span>
<span className="ml-2 text-xs font-light leading-none whitespace-nowrap">
<span className="ml-2 text-xs font-light leading-none whitespace-nowrap hidden md:inline">
{formatToLocalTime(props.event.startAt)}
</span>
<span className="ml-2 font-medium leading-none truncate">
<span className="md:ml-2 font-medium leading-none md:truncate ">
{props.event.title}
</span>
</button>
Expand Down
13 changes: 10 additions & 3 deletions client/src/features/calendar/MonthAndYear.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ const MonthAndYear = ({
return (
<div className="flex items-center">
<div className="flex">
<button onClick={handlePreviousMonth}>
<button
onClick={handlePreviousMonth}
className="hover:scale-110 hover:text-blue-500 transition-transform duration-200 cursor-pointer"
>
<svg
className="w-6 h-6 max-[440px]:w-4 max-[440px]:h-4"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -23,7 +26,11 @@ const MonthAndYear = ({
/>
</svg>
</button>
<button data-cy="next-month" onClick={handleNextMonth}>
<button
data-cy="next-month"
onClick={handleNextMonth}
className="hover:scale-110 hover:text-blue-500 transition-transform duration-200 cursor-pointer"
>
<svg
className="w-6 h-6 max-[440px]:w-4 max-[440px]:h-4"
xmlns="http://www.w3.org/2000/svg"
Expand All @@ -40,7 +47,7 @@ const MonthAndYear = ({
</svg>
</button>
</div>
<h2 className="max-[440px]:ml-1 ml-2 w-[14ch] max-[440px]:text-base max-[440px]:text-center sm:text-3xl text-xl font-bold leading-none">
<h2 className="max-[440px]:ml-1 ml-2 w-[14ch] max-[440px]:text-base sm:text-3xl text-xl font-bold leading-none text-center">
{month}, {year}
</h2>
</div>
Expand Down
2 changes: 1 addition & 1 deletion client/src/features/calendarHeader/CalendarHeader.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ function CalendarHeader({ date }) {
onClick={() => navigate("/")}
/>
</section>
<section className="flex items-center w-full order-first lg:w-min lg:space-x-3 lg:order-none justify-between mb-4 lg:mb-0">
<section className="flex items-center w-full order-first lg:w-min lg:space-x-3 lg:order-0 justify-between mb-4 lg:mb-0">
<img src={Logo} className="max-w-none max-[380px]:w-9" alt="Logo" />
<MonthAndYear
month={date?.month}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
function HeaderButton({ Icon, tooltipText, ...rest }) {
return (
<button
className="p-2 sm:p-3 relative bg-[#F5E7DE] shadow-[0_4px_4px_0_rgba(0,0,0,0.25)] rounded-lg group font-inconsolata font-bold"
className="p-2 sm:p-3 relative bg-[#F5E7DE] shadow-[0_4px_4px_0_rgba(0,0,0,0.25)] rounded-lg group font-inconsolata font-bold cursor-pointer"
{...rest}
>
<Icon className="max-[380px]:w-4 max-[380px]:h-4 w-6 h-6 sm:w-8 sm:h-8 text-[#C57756]" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
function TodayButton({ text, tooltipText, ...rest }) {
return (
<button
className="relative sm:p-2 sm:px-4 p-1 px-3 bg-teal-light shadow-[0_4px_4px_0_rgba(0,0,0,0.25)] rounded-lg font-inconsolata font-bold"
className="relative sm:p-2 sm:px-4 p-1 px-3 bg-teal-light shadow-[0_4px_4px_0_rgba(0,0,0,0.25)] rounded-lg font-inconsolata font-bold cursor-pointer"
{...rest}
>
<span className="text-lg font-bold max-[440px]:text-sm">{text}</span>
Expand Down
20 changes: 10 additions & 10 deletions client/src/features/form/FormConfirm.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Title
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["title"]}</p>
</div>
</div>
Expand All @@ -19,7 +19,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Description
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["description"]}</p>
</div>
</div>
Expand All @@ -29,7 +29,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Initial Date
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["initialDate"]}</p>
</div>
</div>
Expand All @@ -38,7 +38,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
End Date
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["finalDate"]}</p>
</div>
</div>
Expand All @@ -48,7 +48,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Discord Name
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["discordName"] || ""}</p>
</div>
</div>
Expand All @@ -57,7 +57,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Location
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["location"]}</p>
</div>
</div>
Expand All @@ -67,7 +67,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Start Time
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["startTime"]}</p>
</div>
</div>
Expand All @@ -76,7 +76,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
End Time
</div>
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded">
<div className="bg-white my-2 p-1 flex text-slate-400 border border-gray-200 rounded-sm">
<p>{formData["endTime"]}</p>
</div>
</div>
Expand All @@ -86,7 +86,7 @@ export default function FormConfirm() {
<div className="font-bold h-6 mt-3 text-grey-500 text-xs leading-8 uppercase">
Recurring
</div>
<div className="bg-white py-4 p-1 my-2 flex border border-gray-200 rounded">
<div className="bg-white py-4 p-1 my-2 flex border border-gray-200 rounded-sm">
<div className="border-r pr-6">
<div className="flex space-x-4 items-center">
<input
Expand Down Expand Up @@ -117,7 +117,7 @@ export default function FormConfirm() {
</div>
</div>
<div className=" mx-7 ">
<div className=" flex space-x-4 items-center">
<div className="flex space-x-4 items-center">
<input
type="checkbox"
value="1"
Expand Down
Loading
Loading